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

Самописный поисковый агент на основе deep agents from scratch

Описание

Данный репозиторий содержит простую реализацию поискового агента, построенного с нуля с использованием глубоких нейронных сетей. Агент:

  • Преобразует запросы и документы в TF‑IDF векторы.
  • Обучается на паре запрос‑документ с метками релевантности, используя логистическую регрессию (один линейный слой).
  • Оценивает точность и полноту на тестовом наборе.
  • Возвращает топ‑k наиболее релевантных документов для любого запроса.

Технологии

  • Python 3.8+
  • PyTorch
  • scikitlearn
  • 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

S
Description
BroJS: 8. Самописный поисковый агент на основе deep agents from scratch
Readme MIT 102 KiB
Languages
Python 80.3%
JavaScript 19.7%