Выполните следующие шаги, чтобы настроить и запустить проект:
Установить PostgreSQL
admin
.Настройте проект
config
в каталоге проекта.db.js
и обновите строку 3:mayanksharma
на имя пользователя вашей системы.Настройте базу данных
CREATE EXTENSION vector;
Установить Олламу
ollama pull snowflake-arctic-embed
Установить зависимости проекта
npm install
node server.js
Установите клиентское расширение REST.
Проверьте API
api.http
чтобы протестировать конечные точки API. {
"query" : " your_search_query "
}
{
"title" : " magazine_title " ,
"author" : " author_name " ,
"category" : " magazine_category " ,
"content" : " magazine_content "
}
Я использовал PostgreSQL с pgvector (хранение векторов внедрения) и tsvector (хранение текста содержимого).
Требование: поиск по 1 миллиону записей
Добавлены индексы Hierarchical Navigable Small Worlds (HNSW) для векторного поиска при внедрении контента. Причина: поиск требует высокой полноты, что делает hnsw лучше, чем ivfflat.
Добавлены указатели названия, автора и содержания.
Добавлена нумерация страниц для сокращения времени загрузки.
Профиль: Пик
Виртуальных пользователей: 20
Продолжительность теста: 5 минут
Обращение к конечной точке: POST /api/v1/magazine/hybridsearch/1 («Глазго», «игра», «бизнес», «шубхам», «еда» и «современный»).
Всего отправлено запросов: 10 915.
Запрос в секунду: 35,62
Среднее время отклика: 116 мс
Используются два отдельных сервиса для текстового поиска и векторного поиска.
Вложения создаются по модели Metal llama «snowflake-arctic-embed», поскольку она легкая.
ШАГ 1. Сначала отображаются общие объекты из результатов как векторного, так и полнотекстового поиска.
ШАГ 2: далее следуют объекты только из текстового поиска,
ШАГ 3: остальные объекты из векторного поиска.
запрос: вектор «Глазго», вернуть «Журнал кельтских праздников», в содержании которого написано «Шотландия»
запрос: вектор «песочное печенье», возвращает «журнал кельтского праздника», поскольку «песочное печенье» связано со словом «Шотландия».
запрос: ключевое слово/полный текст «шубхам», возвращает «Переподготовка по физике», имя автора «Шубхам Торв».
запрос: ключевое слово/полный текст «mayank», возвращает «Digit Gaming», имя автора которого «Mayank Khurana».
запрос: ключевое слово/полнотекстовый «месяц», возвращает «Dalal Street Journal», содержащий содержание «Все о видеоиграх в этом месяце».
/model