JavaScript: RAG, sənəddən cavab almaq
Suala uyğun paraqrafı tap və AI-ya yalnız ondan cavab verdir.
Bütün dərslər · JavaScript dərsləri: sıfırdan öyrən
RAG nədir
AI ümumi mövzunu bilir, sənin PDF-ini yox. Bütün kitabı bir sorğuya qoymaq olmur: limit dolur. Tanımadığı yerdə isə uydurur. RAG əvvəl suala uyğun paraqrafı tapır, sonra AI-ya deyir: yalnız bu mətndən cavab ver. Mətn yoxdursa, "Bu məlumat sənəddə yoxdur" yaz.
Dörd addım və kod
Sənəd kiçik paraqraflara bölünür. Hər paraqraf rəqəmə, vektora çevrilir ki, məna tutulsun. Sual gələndə ən oxşar paraqraf tapılır. O paraqraf və sual birlikdə göndərilir. Minlərlə parça adi massivə sığmır. Supabase-də pgvector ilə saxlanır və SQL ən yaxın parçanı tapır. Axtarış səhv paraqraf seçsə, cavab da səhv olur.
const apiKey = process.env.GEMINI_API_KEY;
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
async function seneddenCavabAl(istifadeciSuali, senedinParaqrafi) {
const sorguMelumati = {
systemInstruction: {
parts: [{
text: "Sən sənəd köməkçisisən. Yalnız verilən mətndən cavab ver. Mətndə yoxdursa yaz: Bu məlumat sənəddə yoxdur. Uydurma."
}]
},
contents: [{
parts: [{
text: `Kontekst:\n${senedinParaqrafi}\n\nSual: ${istifadeciSuali}`
}]
}]
};
const cavab = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(sorguMelumati)
});
const melumat = await cavab.json();
console.log(melumat.candidates[0].content.parts[0].text);
}
const pdfdenTapilanHisse = "Nibras PDF aləti brauzerdə açılır. Fayl serverə yüklənmir.";
seneddenCavabAl("PDF aləti harada açılır?", pdfdenTapilanHisse);Suallar
100 səhifəni bir contents-ə qoymaq olarmı? Xeyr. Token limiti dolur. Sənəd kiçik paraqraflara bölünür.
Niyə uydurur? Təlimatda qadağa yoxdur. "Yalnız bu mətndən cavab ver, yoxdursa belə yaz" cümləsi systemInstruction-da durmalıdır.
Cavab niyə səhv paraqrafdan gəlir? Axtarış uyğun parçanı seçməyib. AI yalnız ona veriləni görür.
RAG iki sözdə nədir? Tap və yalnız tapılandan yaz. Özündən əlavə etmə.