语义搜索工具

一个基于Qdrant向量数据库和sentence-transformers模型的语义搜索工具,支持多种文件格式的上传和管理。

  • by Okipniy
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 okipniy/mcp-server-qdrant-qwen3

使用说明

Синтакс-помощник 1С

Веб-интерфейс для семантического поиска по текстовым данным с использованием векторной базы данных Qdrant и моделей sentence-transformers.

Ключевые возможности

  • Загрузка файлов: Поддерживаются форматы .txt, .md, .bsl, .docx, .json. Возможна загрузка .zip архивов с файлами этих форматов.
  • Семантический поиск: Поиск по векторной базе данных с использованием ИИ-моделей.
  • Управление коллекциями: Создание, удаление и просмотр содержимого коллекций (векторных пространств) в Qdrant.
  • Администрирование:
    • Просмотр логов сервера с пагинацией.
    • Перезапуск сервера через веб-интерфейс.
    • Просмотр содержимого коллекций с пагинацией.

Установка и запуск

Вариант 1: Локальная установка

1. Клонирование репозитория

git clone <URL вашего репозитория>
cd <имя папки>

2. Установка зависимостей

pip install -r requirements.txt

3. Запуск

python run.py

Сервер будет доступен по адресу http://localhost:8123.

Вариант 2: Развертывание в Docker (рекомендуется)

Предварительные требования

  • Docker Engine 20.10+
  • Docker Compose 2.0+

1. Клонирование репозитория

git clone <URL вашего репозитория>
cd <имя папки>

2. Сборка и запуск контейнера

# Остановка существующих контейнеров (если есть)
docker-compose down

# Сборка образа и запуск контейнера
docker-compose up --build -d

# Проверка статуса
docker-compose ps

3. Проверка работоспособности

# Проверка логов контейнера
docker-compose logs -f

# Проверка доступности API
curl http://localhost:8123/api/collections

4. Доступ к приложению

  • Веб-интерфейс: http://localhost:8123
  • API документация (Swagger): http://localhost:8123/docs
  • Админ-панель: http://localhost:8123

Управление контейнером

# Остановка контейнера
docker-compose down

# Перезапуск контейнера
docker-compose restart

# Просмотр логов
docker-compose logs -f

# Обновление кода и пересборка
docker-compose down
docker-compose up --build -d

API Endpoints

Поиск (POST)

POST /api/search/
Content-Type: application/json

{
  "query": "ваш поисковый запрос",
  "collection_name": "имя_коллекции",
  "limit": 10,
  "score_threshold": 0.5
}

Коллекции

  • GET /api/collections - список коллекций
  • POST /api/collections/{name} - создание коллекции
  • DELETE /api/collections/{name} - удаление коллекции
  • GET /api/collections/{name}/points - просмотр точек коллекции

Загрузка файлов

  • POST /upload - загрузка файла
  • GET /tasks/{task_id} - статус задачи загрузки

Администрирование

  • POST /api/admin/restart - перезапуск сервера
  • GET /api/admin/logs/list - список лог-файлов
  • GET /api/admin/logs/view/{filename} - просмотр лога

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

СинтаксисПомошник/
├── app/
│   ├── routers/
│   │   ├── admin.py      # Администрирование
│   │   ├── collections.py # Управление коллекциями
│   │   ├── search.py     # Семантический поиск
│   │   ├── upload.py     # Загрузка файлов
│   │   └── web.py        # Веб-страницы
│   ├── processing.py     # Обработка текста
│   └── tasks.py          # Фоновые задачи
├── templates/            # HTML-шаблоны
├── static/              # Статические файлы
├── logs/                # Логи приложения
├── qdrant_db/           # Локальная БД Qdrant
├── config.py            # Конфигурация
├── main.py              # Точка входа FastAPI
├── run.py               # Скрипт запуска
├── Dockerfile           # Docker-образ
├── docker-compose.yml   # Docker Compose
└── requirements.txt     # Зависимости Python

Конфигурация

Основные настройки в config.py:

  • MODEL_NAME: Модель для векторизации (по умолчанию: "Qwen/Qwen3-Embedding-0.6B")
  • CHUNK_SIZE: Размер чанка текста (по умолчанию: 500 символов)
  • CHUNK_OVERLAP: Перекрытие чанков (по умолчанию: 50 символов)
  • QDRANT_DB_PATH: Путь к локальной БД Qdrant

Поддерживаемые форматы файлов

  • .txt - текстовые файлы
  • .md - Markdown файлы
  • .bsl - файлы 1С
  • .os - файлы 1С
  • .zip - архивы с файлами вышеуказанных форматов

Логирование

Логи сохраняются в директории logs/:

  • server.log - основной лог сервера
  • server.log.YYYY-MM-DD - архивированные логи по датам

Устранение неполадок

Контейнер не запускается

# Проверка логов
docker-compose logs

# Проверка портов
netstat -an | grep 8123

# Пересборка образа
docker-compose down
docker system prune -f
docker-compose up --build -d

Проблемы с доступом к API

# Проверка статуса контейнера
docker-compose ps

# Проверка доступности
curl http://localhost:8123/api/collections

# Перезапуск контейнера
docker-compose restart

Очистка данных

# Удаление контейнера и данных
docker-compose down -v
rm -rf qdrant_db/
rm -rf logs/

Разработка

Локальная разработка

# Установка зависимостей для разработки
pip install -r requirements.txt

# Запуск в режиме разработки
python main.py

Отладка в Docker

# Запуск с выводом логов
docker-compose up

# Подключение к контейнеру
docker exec -it syntax-helper-web-1 bash

Лицензия

[Укажите вашу лицензию]