Bangun backend untuk pengambilan dokumen dengan caching.
Algoritma caching membuat antrian di server yang akan menyimpan jumlah node yang terbatas dari database vektor dari Qures sebelumnya. Untuk setiap permintaan dari pengguna akan pertama kali dicocokkan dengan kueri dalam antrian dan jika kesamaan (cosinus) di atas 0,9 daripada node -node yang kembali dari tabel pencarian yang dipelihara secara terpisah.
Permintaan pertama => waktu yang diambil 787 ms 
Permintaan serupa kedua => waktu yang diambil 54 ms 
Permintaan yang buruk 
Titik Akhir Periksa Kesehatan
curl --location ' localhost:8001/health 'Cari Periksa Titik Akhir
curl --location ' localhost:8001/search ' --header ' user_id: riondsilva ' --header ' Content-Type: application/json ' --data ' { "text": "Ingredient Substitutions" , "top_k": 5 , "threshold": 0.3 } '*Jalankan secara berurutan
Gambar chroma
docker run -p 8000:8000 chromadb/chromaGambar postgres
docker run --name user-database -p 5432:5432
-e POSTGRES_PASSWORD=your_password -d postgres:12.20-alpine3.20 docker stop user-databaseDoc-retrieval
git clone https://github.com/RionDsilvaCS/document-retrieval-caching.git Buat file .env di direktori utama dan tambahkan variabel di bawah ini
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/postgres"
COLLECTION_NAME="collection_name"
Buat data Nama Direktori dan Tambahkan Dokumen PDF
mkdir data
Jalankan store_in_db.py untuk menyimpan konten ./data ke Chromadb
python store_in_db.pydocker compose up --build /health adalah mendapatkan titik akhir untuk memeriksa apakah server boot up
Titik akhir
http://127.0.0.1:8001/health
Tanggapan
{
"Server Status" : " Successfully running ? "
} /search adalah titik akhir posting untuk berbicara dengan chatbot
Titik akhir
http://127.0.0.1:8001/search
Header
{
"user_id" : " riondsilva "
}Tubuh json
{
"text" : " How are you? " ,
"top_k" : 3 ,
"threshold" : 0.3
}Tanggapan
{
"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 "
}