学习目标
学习《2.2扩展答疑机器人的知识范围》这部分内容,旨在掌握扩展大模型知识范围的方法,尤其是RAG技术的原理与应用,以便能创建基于公司制度文件进行回答的答疑机器人,为阿里云大模型高级工程师ACP认证考试做准备,同时提升在大模型实际应用开发方面的能力。具体如下:
- 理解RAG的工作流程,包括建立索引和检索生成阶段的具体步骤。
- 学会使用LlamaIndex创建一个RAG应用,能够基于给定的公司制度文件进行问题解答。
- 掌握保存与加载索引的方法,提高RAG应用的响应速度。
- 了解RAG应用中多轮对话的实现机制和方法。
知识点汇总
1. RAG的工作原理
RAG是扩展大模型知识范围的有效方案。建立索引时,文档解析把知识库文档转为大模型能理解的文字形式;文本分段方便后续查找相关内容;文本向量化借助嵌入模型将段落和问题数字化,便于比较相似度;存储索引将向量化后的段落存为向量数据库,加快响应。检索生成阶段,检索通过比较语义相似度召回文本段,生成则利用大模型总结能力,结合问题和检索到的文本段给出回复。
2. 创建RAG应用
在特定Python环境下,先配置百炼API Key。通过LlamaIndex的SimpleDirectoryReader加载文件为document对象,再用VectorStoreIndex的from_documents方法完成切片和建立索引,指定embedding模型。创建提问引擎时可设置流式输出,并选择合适的文本生成模型,最后就能基于公司制度文件进行提问和获取回复。
3. 保存与加载索引
创建索引耗时较长,LlamaIndex提供方法将索引保存到本地,如index.storage_context.persist("knowledge_base/test")
。加载时,通过StorageContext.from_defaults
和load_index_from_storage
方法,指定保存路径和embedding模型即可。
4. RAG的多轮对话
直接将用户输入与文本段比较进行检索,在多轮对话中可能因丢失历史信息导致不准确。业界解决办法是用大模型基于历史对话改写问题,LlamaIndex提供工具实现这一过程,