From d022845e8238589f3ee0550381655c6f580c359b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Thu, 28 May 2026 09:21:46 +0000 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B3=D0=B5=D0=BD=D1=82=20=D1=81=20RAG-?= =?UTF-8?q?=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D1=8C=D1=8E:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9d2cd67..7457764 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,108 @@ -# task-6a02e23d-agent-s-rag-pamyatyu +# Агент с RAG‑памятью -Решения домашних заданий \ No newline at end of file +## Описание проекта +Проект реализует **RAG‑агента** (Retrieval‑Augmented Generation) на базе FastAPI и LangChain, который хранит документы векторно в Qdrant и использует OpenAI GPT‑4 для генерации ответов. +- Векторизатор: `OpenAIEmbeddings` +- Хранилище: `Qdrant` (локальный сервер или облачный) +- Генерация: `ChatOpenAI` (GPT‑4, температура = 0) + +API предоставляет один эндпоинт `/ask`, принимающий вопрос и возвращающий ответ, сформированный на основе найденных векторных документов. + +## Установка зависимостей +```bash +# Создайте виртуальное окружение (рекомендуется) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Установите зависимости из requirements.txt +pip install -r requirements.txt +``` + +`requirements.txt` +```text +fastapi +uvicorn[standard] +pydantic +langchain +openai +qdrant-client +rich +``` + +> **Важно** +> 1. Запустите сервер Qdrant (локально: `docker run -p 6333:6333 qdrant/qdrant`, облачно – получите URL). +> 2. Установите переменную окружения `OPENAI_API_KEY` с вашим ключом OpenAI. + +## Конфигурация +```bash +export QDRANT_URL="http://localhost:6333" # адрес сервера Qdrant (по умолчанию) +export QDRANT_COLLECTION="rag_memory" # имя коллекции в Qdrant +export OPENAI_API_KEY="sk-..." # ваш ключ OpenAI +``` + +## Запуск приложения +```bash +uvicorn solution:app --reload +``` +После запуска приложение будет доступно по адресу `http://127.0.0.1:8000`. +Swagger UI можно открыть в браузере по `/docs`. + +## Эндпоинты + +| Метод | Путь | Описание | +|-------|------|----------| +| POST | /ask | Принимает JSON с полем `question` (строка) и возвращает ответ GPT‑4. | + +### Пример запроса +```bash +curl -X POST "http://127.0.0.1:8000/ask" \ + -H "Content-Type: application/json" \ + -d '{"question":"Какой у меня возраст?"}' +``` + +### Ожидаемый ответ +```json +{ + "answer": "Ваш возраст составляет 30 лет." +} +``` + +## Как добавить документы в память + +Для того чтобы агент мог отвечать на вопросы, необходимо загрузить документы в Qdrant. Это можно сделать вручную через API Qdrant или написать скрипт: + +```python +from langchain.document_loaders import TextLoader +from langchain.embeddings.openai import OpenAIEmbeddings +from langchain.vectorstores.qdrant import Qdrant + +embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY) +vectorstore = Qdrant( + client=None, + collection_name="rag_memory", + embeddings=embeddings, + url="http://localhost:6333" +) + +loader = TextLoader("path/to/your/document.txt") +docs = loader.load() +vectorstore.add_documents(docs) +``` + +После добавления документов агент сможет использовать их при генерации ответов. + +## Пример использования в коде +```python +import requests + +response = requests.post( + "http://127.0.0.1:8000/ask", + json={"question": "Что такое RAG?"} +) +print(response.json()["answer"]) +``` + +--- + +**Автор:** [Ваше имя] +**Дата:** 2026‑05‑28 \ No newline at end of file