让LLM开卷答题(RAG)的理解与实现

RAG

产生

  • 知识密集型任务 指如果不依靠外部知识,即使是人类也不能取得很好的表现的任务

    ① 模型容量再大,也记不住所有知识。

    ② 难以方便地扩展或修改全部知识

检索增强生成 (Retrieval Augmented Generation)

  • 思路:根据收到的问题从外挂的知识库检索相关上下文背景提供准确和最新的知识。

    • 阶段① 合了序列到序列(Seq2Seq)模型和生成对抗网络(GAN)的思想,利用向量数据库的高效存储和检索能力,在检索阶段召回目标知识
    • 阶段② 利用大模型/提示词工程实现增强,将召回的知识合理利用,生成目标答案
  • 目的:

    • ①提高质量(允许对新增数据使用相同的模型处理无需调整和微调模型,拓展可用性)

    • ②减少错误(降低幻觉的可能)

    • ③保证私域数据安全(本地知识库) 实现 "开卷"答题

      相当于为参数化的seq2seq模型赋予了检索式的非参数记忆,实现拿到问题后先查资料再答题的效果

模型工作流程

以LangChain架构图为例:

    1. 文档加载与处理 加载文档(Local Documents):从本地文档中获取原始数据。

文档预处理(Unstructured Loader):解析文档并转换为文本格式。

文本处理(Text):存储解析后的文本。

文本分块(Text Splitter):将大文本分割为小的文本片段(Chunks)。

    1. 索引构建 文本嵌入(Embedding):使用嵌入模型将文本块转换为向量表示。

存储向量(VectorStore):存储文本块的向量表示,以便快速检索。

    1. 查询处理 用户查询(Query):用户输入查询。

查询嵌入(Embedding):将查询转换为向量表示。

生成查询向量(Query Vector)。

    1. 检索相关文本 计算相似度(Vector Similarity):计算查询向量与存储向量的相似度。

检索相关文本(Related Text Chunks):根据相似度找到最相关的文本片段。

    1. 生成回答 填充提示模板(Prompt Template):将检索到的文本填充到提示模板中。

构造最终Prompt(Prompt)。

输入LLM(LLM):将最终Prompt输入大语言模型。

生成答案(Answer):大语言模型基于检索的文本和用户查询生成最终答案。

实现

主要组成部分

  • 检索器(Retriever):检索器从大规模语料库中检索与给定目标文本相关的上下文,并使用这些上下文来增强生成器的输入。检索器通常使用预训练的语言模型进行查询和匹配操作。
  • 生成器(Generator):生成器使用检索器检索到的上下文和目标文本作为输入,并生成与目标文本相关的响应或文本。生成器通常采用Seq2Seq模型结构,将上下文和目标文本拼接在一起作为输入,并输出生成的响应文本。
  • 判别器(Discriminator):判别器的目的是区分生成的文本和真实的语料库文本。它使用深度学习技术,如卷积神经网络(CNN)或循环神经网络(RNN),来对生成的文本进行分类和打分,以评估其真实性和质量。

各模块的思路与实现方法

  • 文本结构化前处理
  • 文本分割方法
  • 向量嵌入
  • 索引构建与检索
  • 增强与生成
相关推荐
laplace01235 小时前
claude code架构猜测总结
架构·大模型·llm·agent·rag
lkbhua莱克瓦246 小时前
RAG到RGA:生成式AI的范式演进
人工智能·llm·prompt·大语言模型·rag·rga
tswddd7 小时前
Debug:mlx-omni-server服务器用qwen3模型出错
llm·debug
致Great8 小时前
TextIn × Agentic RAG:让大模型真正读懂学术论文
llm·agent
Stirner10 小时前
A2UI : 以动态 UI 代替 LLM 文本输出的方案
前端·llm·agent
kagg88612 小时前
mcp-gateway —— 隐藏mcp上下文以避免不必要的tokens开销
llm·mcp
夏日白云12 小时前
《PDF解析工程实录》第 17 章|内容流里“看得见却看不见”的字符:那些幽灵文字从哪来?
pdf·llm·大语言模型·rag·文档解析
人工干智能1 天前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
小Pawn爷1 天前
10.不改模型只改提示P-Tuning微调新思路
llm·p-tuning
aopstudio1 天前
Jinja 是什么?为什么大模型的聊天模板使用它?
自然语言处理·llm·jinja