98 lines
2.8 KiB
Markdown
98 lines
2.8 KiB
Markdown
# Самописный поисковый агент на основе deep agents from scratch
|
||
|
||
## Описание
|
||
|
||
Это простая реализация поискового агента, использующего трансформерный энкодер для векторизации документов и запросов. Поиск осуществляется по косинусному сходству между векторами.
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
src/
|
||
├── index.py # Основной код агента и API
|
||
data/
|
||
└── documents.txt # Текстовый файл с документами (один документ на строку)
|
||
README.md
|
||
```
|
||
|
||
> **Важно**: файл `data/documents.txt` должен существовать и содержать хотя бы несколько строк текста. Если его нет, агент не запустится.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
# Создайте виртуальное окружение (рекомендуется)
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install -U pip
|
||
pip install torch transformers fastapi uvicorn pydantic numpy
|
||
```
|
||
|
||
> Если у вас есть GPU, убедитесь, что установлена версия `torch` с поддержкой CUDA.
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
python src/index.py
|
||
```
|
||
|
||
Сервер будет доступен по адресу `http://0.0.0.0:8000`.
|
||
|
||
## API
|
||
|
||
### POST `/search`
|
||
|
||
**Запрос**
|
||
|
||
```json
|
||
{
|
||
"query": "пример запроса",
|
||
"top_k": 5
|
||
}
|
||
```
|
||
|
||
- `query` – строка запроса.
|
||
- `top_k` – количество возвращаемых документов (по умолчанию 5).
|
||
|
||
**Ответ**
|
||
|
||
```json
|
||
{
|
||
"results": [
|
||
{
|
||
"document": "текст найденного документа",
|
||
"score": 0.8723
|
||
},
|
||
...
|
||
]
|
||
}
|
||
```
|
||
|
||
## Пример использования
|
||
|
||
```bash
|
||
curl -X POST "http://0.0.0.0:8000/search" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"query":"машинное обучение", "top_k":3}'
|
||
```
|
||
|
||
## Как добавить документы
|
||
|
||
1. Откройте файл `data/documents.txt`.
|
||
2. Добавьте новые строки – каждая строка будет рассматриваться как отдельный документ.
|
||
3. Перезапустите сервер, чтобы обновления вступили в силу.
|
||
|
||
## Тесты
|
||
|
||
Тестов в проекте нет, но вы можете быстро проверить работу:
|
||
|
||
```python
|
||
from src.index import SearchAgent
|
||
|
||
agent = SearchAgent()
|
||
print(agent.search("пример", top_k=3))
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT License |