95 lines
3.2 KiB
Markdown
95 lines
3.2 KiB
Markdown
# Самописный поисковый агент на основе deep agents from scratch
|
||
|
||
## Описание
|
||
|
||
Данный репозиторий содержит простую реализацию поискового агента, построенного с нуля с использованием глубоких нейронных сетей. Агент:
|
||
|
||
- **Преобразует** запросы и документы в TF‑IDF векторы.
|
||
- **Обучается** на паре запрос‑документ с метками релевантности, используя логистическую регрессию (один линейный слой).
|
||
- **Оценивает** точность и полноту на тестовом наборе.
|
||
- **Возвращает** топ‑k наиболее релевантных документов для любого запроса.
|
||
|
||
### Технологии
|
||
|
||
- Python 3.8+
|
||
- PyTorch
|
||
- scikit‑learn
|
||
- NumPy
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
# Клонируйте репозиторий
|
||
git clone https://git.brojs.ru/kuzakhmetovartur/8.-samopisnyy-poiskovyy-agent-na-osnove.git
|
||
cd 8.-samopisnyy-poiskovyy-agent-na-osnove
|
||
|
||
# Создайте виртуальное окружение (рекомендуется)
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
`requirements.txt` содержит:
|
||
|
||
```
|
||
torch>=1.7.0
|
||
scikit-learn>=0.24
|
||
numpy>=1.19
|
||
```
|
||
|
||
## Использование
|
||
|
||
### Демонстрация
|
||
|
||
```bash
|
||
python src/index.py
|
||
```
|
||
|
||
Вы увидите вывод обучения, оценку точности/полноты и пример поиска.
|
||
|
||
### Интеграция в свой проект
|
||
|
||
```python
|
||
from src.index import SearchAgent
|
||
|
||
documents = [
|
||
"Документ 1",
|
||
"Документ 2",
|
||
# ...
|
||
]
|
||
|
||
agent = SearchAgent(documents)
|
||
|
||
# Обучаем
|
||
queries = ["Какой вопрос?", "Что такое AI?"]
|
||
relevance = [[0], [1]] # индексы релевантных документов
|
||
agent.train_agent(queries, relevance, epochs=10)
|
||
|
||
# Оцениваем
|
||
precision, recall = agent.evaluate(queries, relevance)
|
||
|
||
# Поиск
|
||
results = agent.search("Новый запрос", top_k=3)
|
||
for doc, score in results:
|
||
print(f"{score:.4f} - {doc}")
|
||
```
|
||
|
||
## Тесты
|
||
|
||
Тесты находятся в `tests/` (если добавлены). Запуск:
|
||
|
||
```bash
|
||
pytest tests/
|
||
```
|
||
|
||
## Ограничения
|
||
|
||
- Модель использует только один линейный слой, поэтому не может захватывать сложные взаимосвязи.
|
||
- Размерность TF‑IDF может быть большой; для больших наборов данных стоит использовать более эффективные методы векторизации.
|
||
- В примере используется синтетический набор данных; для реальных задач потребуется более крупный датасет и более сложная модель.
|
||
|
||
## Лицензия
|
||
|
||
MIT License |