Skip to content

Commit 93b75f8

Browse files
Code changes
1 parent 32910f9 commit 93b75f8

File tree

1 file changed

+41
-39
lines changed

1 file changed

+41
-39
lines changed

src/content/docs/workers-ai/tutorials/build-a-retrieval-augmented-generation-ai.mdx

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -280,45 +280,47 @@ const app = new Hono();
280280
// Existing post route...
281281
// app.post('/notes', async (c) => { ... })
282282

283-
app.get('/', async (c) => {
284-
const question = c.req.query('text') || "What is the square root of 9?"
285-
286-
const embeddings = await c.env.AI.run('@cf/baai/bge-base-en-v1.5', { text: question })
287-
const vectors = embeddings.data[0]
288-
289-
const vectorQuery = await c.env.VECTOR_INDEX.query(vectors, { topK: 1 });
290-
let vecId;
291-
if (vectorQuery.matches && vectorQuery.matches.length > 0 && vectorQuery.matches[0]) {
292-
vecId = vectorQuery.matches[0].id;
293-
} else {
294-
console.log("No matching vector found or vectorQuery.matches is empty");
295-
}
296-
297-
let notes = []
298-
if (vecId) {
299-
const query = `SELECT * FROM notes WHERE id = ?`
300-
const { results } = await c.env.DB.prepare(query).bind(vecId).all()
301-
if (results) notes = results.map(vec => vec.text)
302-
}
303-
304-
const contextMessage = notes.length
305-
? `Context:\n${notes.map(note => `- ${note}`).join("\n")}`
306-
: ""
307-
308-
const systemPrompt = `When answering the question or responding, use the context provided, if it is provided and relevant.`
309-
310-
const { response: answer } = await c.env.AI.run(
311-
'@cf/meta/llama-3-8b-instruct',
312-
{
313-
messages: [
314-
...(notes.length ? [{ role: 'system', content: contextMessage }] : []),
315-
{ role: 'system', content: systemPrompt },
316-
{ role: 'user', content: question }
317-
]
318-
}
319-
)
320-
321-
return c.text(answer);
283+
app.get("/", async (c) => {
284+
const question = c.req.query("text") || "What is the square root of 9?";
285+
286+
const embeddings = await c.env.AI.run("@cf/baai/bge-base-en-v1.5", {
287+
text: question,
288+
});
289+
const vectors = embeddings.data[0];
290+
291+
const vectorQuery = await c.env.VECTOR_INDEX.query(vectors, { topK: 1 });
292+
let vecId;
293+
if (vectorQuery?.matches?.length) {
294+
vecId = vectorQuery.matches[0].id;
295+
} else {
296+
console.log("No matching vector found or vectorQuery.matches is empty");
297+
}
298+
299+
let notes = [];
300+
if (vecId) {
301+
const query = `SELECT * FROM notes WHERE id = ?`;
302+
const { results } = await c.env.DB.prepare(query).bind(vecId).all();
303+
if (results) notes = results.map((vec) => vec.text);
304+
}
305+
306+
const contextMessage = notes.length
307+
? `Context:\n${notes.map((note) => `- ${note}`).join("\n")}`
308+
: "";
309+
310+
const systemPrompt = `When answering the question or responding, use the context provided, if it is provided and relevant.`;
311+
312+
const { response: answer } = await c.env.AI.run(
313+
"@cf/meta/llama-3-8b-instruct",
314+
{
315+
messages: [
316+
...(notes.length ? [{ role: "system", content: contextMessage }] : []),
317+
{ role: "system", content: systemPrompt },
318+
{ role: "user", content: question },
319+
],
320+
},
321+
);
322+
323+
return c.text(answer);
322324
});
323325

324326
app.onError((err, c) => {

0 commit comments

Comments
 (0)