# Самописный поисковый агент на основе 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