An open API service indexing awesome lists of open source software.

https://github.com/idushii/llm_search

ext Mind Search
https://github.com/idushii/llm_search

Last synced: about 1 month ago
JSON representation

ext Mind Search

Awesome Lists containing this project

README

        

# Mind Search - Система интеллектуального поиска и обработки информации

## Результаты

Этот проект был разработан как проверка того, какие ответы можно получить из сети в "наивном" виде.

По итогам я узнал:
- Искать по сети можно через SearchXNG API, но при этом могут быть проблемы с тем, что нужно жестко выдержать лимиты на количество запросов в минуту; есть настройки для прокси на уровне сервера SearchXNG.
- Что LLM можно условно поделить на два типа:
- Стоимость 10 рублей за запрос.
- Стоимость 10 копеек за запрос.
- С моей точки зрения "наивная" реализация поиска может дать информацию качеством лучше, чем Perplexity. Лично моя точка зрения, конкретно мой случай. Кроме того, скорее всего оценка субъективная.
- Стоимость запроса по этой системе составялет порядка 15 рублей за запрос с учетом цен в рублях.
- Я думаю мысль о переработке поискового процесса, так как даже в таком виде я ожидал более качественные ответы.
- Данный проект разрабатывался с использованием Cursor IDE с наивным подходом к реализации и контрольными проверками кода.
- Как дальнейший шаг я возможно перенесу текущую систему поиска на n8n для использования его в качестве API. Для того, чтобы было проще заниматься в том числе "промптинженеригом".

## Описание

Mind Search - это интеллектуальная система поиска и обработки информации, разработанная для глубокого и всестороннего анализа заданных тем. Система выполняет многоуровневый поиск по запросу пользователя, обрабатывает найденную информацию и генерирует структурированный, содержательный ответ на основе наиболее релевантных источников.

## Ключевые особенности

- **Планирование запросов**: Автоматическое формирование подзапросов на основе исходного запроса пользователя
- **Многоязычный поиск**: Генерация поисковых запросов на русском и английском языках
- **Интеллектуальное ранжирование**: Оценка результатов поиска с использованием языковой модели (LLM) по 5 критериям
- **Эффективное использование ресурсов**: Скрапинг и обработка только наиболее релевантных источников
- **Саммаризация контента**: Создание качественных сжатых саммари для каждого отобранного документа
- **Комплексный ответ**: Генерация структурированного ответа с разделами, подразделами и ссылками на источники
- **Кэширование данных**: Сохранение промежуточных результатов для повторного использования

## Процесс работы

1. **Ввод запроса**: Пользователь вводит запрос через консольный интерфейс
2. **Генерация подзапросов**: Система создает до 3-х подзапросов, охватывающих разные аспекты темы
3. **Генерация поисковых запросов**: Для каждого подзапроса формируются поисковые запросы на русском и английском языках
4. **Поиск информации**: Выполнение поисковых запросов через API поисковой системы
5. **Ранжирование результатов**: Оценка релевантности каждого результата с использованием LLM по 5 критериям:
- Соответствие исходному запросу
- Соответствие направлению поиска (подзапросу)
- Полнота информации
- Точность данных
- Читабельность и структура текста
6. **Отбор топ-5 результатов**: На основе LLM-ранжирования отбираются 5 наиболее релевантных результатов
7. **Скрапинг контента**: Получение содержимого только для отобранных топ-5 результатов
8. **Саммаризация**: Создание сжатых саммари для каждого документа
9. **Ранжирование саммари**: Выбор наиболее информативных саммари для финального ответа
10. **Генерация ответа**: Формирование структурированного ответа на основе отобранных саммари

## Технические требования

- Python 3.8+
- API ключи:
- AITUNNEL_API_KEY для доступа к языковой модели
- Личный экземпляр SearchXNG с включенным свойством format=json.
- Стабильное интернет-соединение

## Основные зависимости

- requests
- python-dotenv
- aiohttp
- asyncio
- BeautifulSoup4

## Улучшенный процесс ранжирования и выбора топ-5 результатов

Важной особенностью системы является двухэтапный процесс обработки результатов поиска:

1. **Этап поиска**: Система собирает все результаты поиска по запросам, но не выполняет скрапинг содержимого на этом этапе.

2. **Этап ранжирования**: Все найденные результаты ранжируются с использованием языковой модели по 5 критериям, каждый оценивается по шкале от 0 до 10:
- Соответствие исходному запросу (0-10) – насколько результат отвечает на поставленный вопрос
- Соответствие направлению поиска (0-10) – насколько результат соответствует текущему подзапросу
- Полнота информации (0-10) – охватывает ли результат ключевые аспекты темы
- Точность (0-10) – содержит ли результат корректные, актуальные и точные данные
- Читабельность и структура (0-10) – насколько текст логично организован и легко воспринимается

3. **Выбор топ-5**: На основе итогового рейтинга (среднее значение по всем критериям) выбираются 5 наиболее релевантных результатов.

4. **Скрапинг топ-5**: Только для этих 5 отобранных результатов система выполняет скрапинг содержимого веб-страниц.

Такой подход позволяет:
- Экономить ресурсы, выполняя скрапинг только для наиболее релевантных результатов
- Повысить качество итогового ответа за счет использования только лучших источников
- Сократить время обработки и объем потребляемого трафика
- Улучшить релевантность итогового ответа благодаря интеллектуальному ранжированию

## Установка и настройка

1. Клонируйте репозиторий:
```bash
git clone https://github.com/your-username/mind-search.git
cd mind-search
```

2. Создайте и активируйте виртуальное окружение:
```bash
python -m venv venv
# Для Windows
venv\Scripts\activate
# Для Linux/Mac
source venv/bin/activate
```

3. Установите зависимости:
```bash
pip install -r requirements.txt
```

4. Создайте файл .env на основе .env.example и заполните необходимые API ключи.

## Использование

Запустите программу:
```bash
python main.py
```

Следуйте инструкциям в интерактивной консоли.

## Сборка exe

- Поломана, может не запуститься на других машинах.

```bash
pyinstaller --noconfirm --onedir --console --name "Mind Search" "main.py"
```

## Структура проекта

- `main.py` - точка входа в приложение
- `/src/` - исходный код системы
- `/core/` - базовые компоненты и утилиты
- `/search/` - модули поиска и скрапинга
- `/processing/` - модули обработки и ранжирования
- `/storage/` - модули управления данными и кэширования
- `/cache/` - директория для кэширования данных

## Примеры запросов

- "Расскажи об Mixture of Tokens, в том числе где используется и какие есть улучшения"
- "Объясни концепцию квантовых вычислений и их применение в криптографии"
- "Сравни различные архитектуры нейронных сетей для задач компьютерного зрения"

## Лицензия

MIT