3.2 KiB
3.2 KiB
Самописный поисковый агент на основе deep agents from scratch
Описание
Данный репозиторий содержит простую реализацию поискового агента, построенного с нуля с использованием глубоких нейронных сетей. Агент:
- Преобразует запросы и документы в TF‑IDF векторы.
- Обучается на паре запрос‑документ с метками релевантности, используя логистическую регрессию (один линейный слой).
- Оценивает точность и полноту на тестовом наборе.
- Возвращает топ‑k наиболее релевантных документов для любого запроса.
Технологии
- Python 3.8+
- PyTorch
- scikit‑learn
- NumPy
Установка
# Клонируйте репозиторий
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
Использование
Демонстрация
python src/index.py
Вы увидите вывод обучения, оценку точности/полноты и пример поиска.
Интеграция в свой проект
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/ (если добавлены). Запуск:
pytest tests/
Ограничения
- Модель использует только один линейный слой, поэтому не может захватывать сложные взаимосвязи.
- Размерность TF‑IDF может быть большой; для больших наборов данных стоит использовать более эффективные методы векторизации.
- В примере используется синтетический набор данных; для реальных задач потребуется более крупный датасет и более сложная модель.
Лицензия
MIT License