Android开发转AI Agent:第10天——把检索和生成串起来,RAG完整流程
·
作者:一位Android开发工程师 | 2026年6月14日
系列:第9天手写了检索,今天把检索+LLM生成串成完整RAG
前言
前两天分别学了 Embedding(文字→向量)和向量检索(找相关文档)。今天把它们和 LLM API 串起来,完成一个完整的 RAG 流程:
用户问题 → 向量检索 → 找到相关文档 → 拼接prompt → LLM生成回答
核心代码
# 步骤1:检索(第9天学的)
q_vec = model.encode(question)
results = []
for doc in docs:
vec = model.encode(doc)
sim = 余弦相似度(vec, q_vec)
results.append((sim, doc))
results.sort(reverse=True)
top3 = [doc for _, doc in results[:3]]
# 步骤2:拼接 prompt
context = " ".join(top3)
prompt = f"""根据以下参考资料回答用户问题。如果资料中没有相关信息,请说"参考资料中未找到"。
参考资料:
{context}
用户问题:
{question}"""
# 步骤3:LLM 生成(第1天学的)
response = client.chat.completions.create(
model="turing/gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.3,
)
print(response.choices[0].message.content)
两个测试问题
问题1:知识库有的
问:协程怎么在Android中管理生命周期?
LLM 从知识库找到了 viewModelScope 和 lifecycleScope 的资料,给出准确回答。
问题2:知识库没有的
问:Retrofit怎么配置拦截器?
LLM 诚实回答:“参考资料中未找到相关信息”——因为知识库里全是协程相关的文档,没有 Retrofit。
这正是 RAG 的核心价值:诚实地说"不知道",而不是瞎编。
今天的一句话总结
RAG = 检索 + 生成。先搜资料再回答,既让 LLM 能回答知识库外的问题,又避免了幻觉(瞎编)。这 3 步(检索→拼接→生成)是后面所有知识库 Agent 的基础。
下一篇预告
第11天:Chroma 向量数据库——用专业工具替代手写的 for 循环检索。
本系列记录一位Android开发者转行AI Agent的完整学习过程,欢迎关注交流。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)