掘金 人工智能 3小时前
GC-QA-RAG 智能问答系统的问答生成
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了gc-qa-rag智能问答系统中“生成(Generation)”阶段的核心机制。该阶段基于用户提问和检索到的相关知识,利用大语言模型生成流畅、综合的答案。文章详细介绍了生成流程、输入结构、提示词设计、生成服务实现、思考模式、多轮对话与问题重写,以及最终生成结果的结构。此外,还总结了该技术的技术优势和工程实践,并提供了相关的代码实现参考。

🔍生成流程概述:生成阶段位于RAG架构的最后一环,包括用户提问、检索知识、构造提示词、输入大语言模型、生成最终答案,并附带原文链接等信息。

💡输入结构与提示词设计:生成环节的输入主要包括用户问题和检索结果。系统采用结构化提示词模板,将用户问题和检索结果拼接后输入给LLM,以便LLM综合上下文与知识库内容生成回答。

🚀生成服务实现:系统通过异步方式调用LLM服务,支持流式输出,提升响应速度和用户体验。主要实现逻辑包括组装消息体、调用LLM的chat/completions接口,并采用流式方式获取模型输出。

🧠思考模式:为增强答案的透明度与可信度,系统支持“思考模式”输出,LLM会先输出推理过程,再给出最终答案,用分隔符区分推理与正式答案。

🔄多轮对话与问题重写:系统支持多轮对话场景,通过收集历史对话内容,输入给LLM问题生成器,LLM输出用户的真实意图问题,作为检索与生成的输入。

✨生成结果结构:最终生成的答案不仅包括直接回答,还可包含相关知识条目的原文链接、标题、分类等元数据,以及详细解释、上下文摘要等辅助信息,甚至用户可选的推理过程。

本章节介绍 gc-qa-rag 智能问答系统中“生成(Generation)”阶段的核心原理与实现细节。该阶段的目标是:基于用户问题和检索到的高相关知识,利用大语言模型生成自然流畅、综合性概述的答案

1. 生成流程概述

问答生成阶段位于 RAG(Retrieval-Augmented Generation)三阶段架构的最后一环。其主要流程如下:

    用户输入问题,系统完成检索,获得 TopK(如 8 条)高相关知识条目(包含问题、答案、详细解释、摘要、原文链接等元数据);系统将用户问题与检索结果整合,构造标准化提示词(Prompt),输入给大语言模型(LLM);LLM 综合上下文与知识库内容,生成最终答案,并可附带原文链接、详细解释等信息返回给用户。

2. 输入结构与提示词设计

生成环节的输入主要包括:

系统采用结构化提示词模板,将上述信息拼接后输入给 LLM。例如:

"""你正在和用户对话,请综合参考上下文以及下面的用户问题和知识库检索结果,回答用户的问题。回答时附上文档链接。## 用户问题{keyword}## 知识库检索结果{hits_text}"""

其中,hits_text为检索结果的 JSON 序列化内容,包含每条知识的“Question”、“Answer”、“FullAnswer”、“Summary”、“Url”等字段。

3. 生成服务实现

系统通过异步方式调用 LLM 服务,支持流式输出,提升响应速度和用户体验。主要实现逻辑如下:

相关代码实现见 ragapp/services/summary.py

async def summary_hits(keyword, messages, hits):    hits_text = json.dumps(hits, ensure_ascii=False, default=vars)    hits_prompt = f"""你正在和用户对话,请综合参考上下文以及下面的用户问题和知识库检索结果,回答用户的问题。回答时附上文档链接。    ## 用户问题    {keyword}    ## 知识库检索结果    {hits_text}    """    ...    return chat(messages_with_hits)

4. 思考模式(Reasoning Mode)

为增强答案的透明度与可信度,系统支持“思考模式”输出。此模式下,LLM 会先输出推理过程,再给出最终答案。例如:

相关实现见 ragapp/services/think.py,适配支持 reasoning_content 的大模型(如 deepseek-R1):

async def think(messages):    ...    async for chunk in completion:        reasoning_content = chunk.choices[0].delta.reasoning_content        ...        content = chunk.choices[0].delta.content        ...

5. 多轮对话与问题重写

系统支持多轮对话场景,能够根据历史对话自动识别用户当前真正想问的问题。具体流程为:

    收集历史对话内容,输入给 LLM 问题生成器;LLM 输出用户的真实意图问题,作为检索与生成的输入。

相关实现见 ragapp/services/query.py

async def chat_for_query(contents):    prompt = f"""你是一个问题生成器,你需要从下面的对话中识别出用户想要查询的问题,直接输出该文本,该文本将用于在知识库中检索相关知识。    ## 对话内容    {contents}    """    ...    return chat(messages)

6. 生成结果结构

最终生成的答案不仅包括直接回答,还可包含:

7. 技术优势与工程实践

了解更多

AI智能体开发指南

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

GC-QA-RAG 生成 大语言模型 RAG
相关文章