课程视频链接:
茴香豆:搭建你的 RAG 智能助理_哔哩哔哩_bilibili
课程文档:
https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/readme.md
茴香豆RAG 助手解决的问题:
1. 知识更新太快,语料太大、难以处理对LLM是很大的挑战,RAG本地知识库可以很好的解决这些问题。RAG不需要经过训练,就可以很好的回答特定的问题。
2. RAG 检索增强生成,通过利用外部知识库来增加LLM的能力。
3. RAG 很好的解决了LLMS处理只是密集型任务是遇到的挑战。可以提供准确的回答,降低成本,实现外部记忆。
4. RAG解决LLM的幻觉、过时的知识和缺乏透明和可追溯的推理过程
RAG工作原理:
1. indexing(索引):将知识源(文档、网页等)分割成chunk,编码成向量存储在向量数据库中。
2. Retrieval(检索):将接受到的用户的问题编码成向量,并在向量数据库中查找与之相关的文档快(trunk)
3. Generation(生成):将检索到的文档块和原始问题一起作为提示(prompt)输入到LLM中,生成最终的回答
向量数据库(Vector-DB):
数据存储:将文本或其他数据通过预训练的模型转换为固定长度的向量表示,这些向量能够捕捉文本的语义信息。
相似性检索:根据用户提供的查询向量,使用向量数据库快速查找出最相关的向量的过程。通过计算余弦相似度来完成。检索结果根据相似度排序,最相关的文档将被用于后继的文本生成。
向量表示的优化:通过使用更高级的技术来支持大规模的向量搜索。
RAG流程示例:
RAG优化方法:
嵌入式优化(embeding optimization):结合稀疏和密集检索;多任务
索引优化(indexing optimization): 细粒度分割;元数据
查询优化(Query optimization): 查询扩展、转换;多查询
上下文管理(Context Curation):重排;上下文选择/压缩
迭代检索(Iterative Retrieval):根据初始查询和最近生成的文本进行重复的搜索
递归检索(recursive retrieval):迭代细化搜索查询;链式推理指导检索过程
自适应检索(Adaptive Retrieval):Flare,Self-RAG;使用LLMs主动决定检索的最佳时机和内