Создайте бэкэнд для поиска документов с кэшированием.
Алгоритм кэширования создал очередь на сервере, в которой будет хранить ограниченное количество узлов из векторной базы данных из предыдущих центров. Для каждого запроса от пользователя сначала будет сопоставлен с запросами в очереди, и если сходство (косинус) выше 0,9, чем эти узлы возвращаются обратно из таблицы поиска, сохранялось отдельно.
Первый запрос => время, взятое 787 ms 
Второй аналогичный запрос => время, взятое 54 ms 
Плохой запрос 
Конечная точка проверки здоровья
curl --location ' localhost:8001/health 'Поиск проверки конечной точки
curl --location ' localhost:8001/search ' --header ' user_id: riondsilva ' --header ' Content-Type: application/json ' --data ' { "text": "Ingredient Substitutions" , "top_k": 5 , "threshold": 0.3 } '*Беги в порядок
Изображение Chroma
docker run -p 8000:8000 chromadb/chromaPostgres Image
docker run --name user-database -p 5432:5432
-e POSTGRES_PASSWORD=your_password -d postgres:12.20-alpine3.20 docker stop user-databaseDoc-retieval
git clone https://github.com/RionDsilvaCS/document-retrieval-caching.git Создать .env -файл в основном каталоге и добавить приведенные ниже переменные
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/postgres"
COLLECTION_NAME="collection_name"
Создать data имени каталога и добавить документы PDF
mkdir data
Запустите store_in_db.py , чтобы сохранить контент ./data в Chromadb
python store_in_db.pydocker compose up --build /health - получить конечную точку, чтобы проверить, загружается ли сервер
Конечная точка
http://127.0.0.1:8001/health
Ответ
{
"Server Status" : " Successfully running ? "
} /search - это конечная точка пост для разговора с чатботом
Конечная точка
http://127.0.0.1:8001/search
Заголовок
{
"user_id" : " riondsilva "
}Json Body
{
"text" : " How are you? " ,
"top_k" : 3 ,
"threshold" : 0.3
}Ответ
{
"bot_message" : {
"top_k_results" : [
{
"message" : " I am great ? "
},
{
"message" : " I am fine "
},
{
"message" : " I am good "
}
],
"top_k" : 3 ,
"threshold" : 0.9
},
"user_message" : {
"text" : " How are you? " ,
"top_k" : 3 ,
"threshold" : 0.9 ,
"inference_time (secs)" : 1.16
},
"user_info" : " riondsilva "
}