Skip to content

本节课代码:https://github.com/AI-FE/private-component-codegen/tree/第23课

上节,基于 OpenAI SDK 实现了 Embedding 的逻辑。

本节,基于 OpenAI SDK 实现 RAG API 的逻辑。

新建一个第 23 课的分支。

bash
git checkout -b 第23课

1. 添加数据库向量相似度查询 selectors

新建lib/db/openai/selectors.ts文件, 让 cursor agent composer 基于以下 prompt 生成代码:

md
创建一个基于向量嵌入的语义相似度搜索函数。该函数需要:

- 接收一个查询向量(embedding)作为输入
- 计算输入向量与数据库中存储的向量之间的余弦相似度
- 筛选出相似度高于指定阈值的结果
- 返回相似度最高的 N 个结果,包含原始内容和相似度分数
- 使用 SQL ORM 实现数据库查询

2. 添加针对单条 message 的 Embedding 函数以及召回

修改app/api/openai/embedding.ts文件

3. 新建 OpenAI API 的 RAG API 路由

新建types.ts文件,定义 RAG API 的请求体

新建app/api/openai/route.ts文件,让 cursor agent composer 基于以下 prompt 生成代码:

md
创建一个基于 Next.js 的流式 AI 对话 API 路由处理器,使用 OpenAI API 实现。该接口需要实现以下功能:

1. 通过 POST 请求接收对话消息
2. 基于最后一条消息使用向量嵌入(embeddings)查找相关内容
3. 创建 OpenAI 的流式对话补全,要求:
   - 将相关内容整合到系统提示词中
   - 使用服务器发送事件(SSE)进行流式响应
   - 在流中同时返回 AI 响应片段和相关内容