Files
8.-samopisnyy-poiskovyy-age…/README.md
T
kuzakhmetovartur 04e3b78a9c
CI / build (3.1) (push) Has been cancelled
CI / build (3.11) (push) Has been cancelled
CI / build (3.8) (push) Has been cancelled
CI / build (3.9) (push) Has been cancelled
feat: solution for '8. Самописный поисковый агент на основе deep agents from scratch'
2026-06-30 16:40:46 +03:00

95 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Самописный поисковый агент на основе deep agents from scratch
## Описание
Данный репозиторий содержит простую реализацию поискового агента, построенного с нуля с использованием глубоких нейронных сетей. Агент:
- **Преобразует** запросы и документы в TF‑IDF векторы.
- **Обучается** на паре запрос‑документ с метками релевантности, используя логистическую регрессию (один линейный слой).
- **Оценивает** точность и полноту на тестовом наборе.
- **Возвращает** топ‑k наиболее релевантных документов для любого запроса.
### Технологии
- Python 3.8+
- PyTorch
- scikitlearn
- 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