Агент с RAG-памятью: README.md

This commit is contained in:
2026-05-28 09:21:46 +00:00
parent caa0b2d679
commit d022845e82
+107 -2
View File
@@ -1,3 +1,108 @@
# task-6a02e23d-agent-s-rag-pamyatyu
# Агент с RAG‑памятью
Решения домашних заданий
## Описание проекта
Проект реализует **RAG‑агента** (RetrievalAugmented 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"])
```
---
**Автор:** [Ваше имя]
**Дата:** 20260528