Этот сервис предназначен для:
- Индексации и хранения информации о товарах в векторном хранилище (ChromaDB).
- Поиска товаров по описанию и метаданным с использованием векторного поиска.
- Интеграции с внешними системами, такими как Telegram и HubSpot, для получения запросов и отправки уведомлений.
Сервис построен на базе FastAPI и использует uvicorn для запуска сервера. Векторное представление данных о товарах формируется с использованием NLP-технологий, что обеспечивает быстрый и точный поиск.
Проект состоит из следующих основных файлов:
-
main.py
Основной модуль, в котором:- Инициализируется приложение FastAPI.
- Определяются API-эндпоинты для поиска товаров.
- Настраиваются зависимости, такие как проверка токена доступа.
- Запускаются фоновые процессы для обработки поисковых запросов и взаимодействия с внешними системами (Telegram, HubSpot).
-
chromadb_utils.py
Утилиты для работы с векторным хранилищем ChromaDB:- Функция для получения или создания коллекций товаров по заданной метке.
- Функции для вставки (upsert) и удаления записей о товарах в коллекциях.
-
text_utils.py
Утилиты для обработки текстов:- Семантическое разбиение описаний товаров на логически завершённые части, что способствует более точной векторизации и поиску.
-
config.py
Конфигурационные параметры проекта, включая настройки подключения к ChromaDB, параметры аутентификации и прочее. -
models.py
Определения моделей данных:- Описание сущностей товаров.
- Модели для формирования запросов на поиск и структурирования ответов API.
-
file_utils.py
Утилиты для работы с файлами, необходимые для импорта данных о товарах и их дальнейшей обработки.
В начале файла импортируются:
- Стандартные библиотеки (для асинхронности, логирования, обработки сигналов).
- Сторонние библиотеки (FastAPI, uvicorn, torch и другие).
- Локальные модули для работы с ChromaDB, интеграции с Telegram, обработки текстов и конфигурации.
Эта конфигурация обеспечивает:
- Инициализацию сервера FastAPI.
- Настройку подключения к векторной базе данных ChromaDB.
- Обработку поисковых запросов по товарам и взаимодействие с внешними системами.
Основные эндпоинты сервиса позволяют:
- Искать товары по текстовому описанию с фильтрацией по метаданным.
- Добавлять, обновлять и удалять записи товаров в базе данных.
- Обрабатывать входящие запросы из внешних источников (например, запросы, поступающие через Telegram).
Для запуска сервиса используется uvicorn. Пример команды для запуска сервера:
uvicorn main:app --host 0.0.0.0 --port 8000