01. RAG初步了解
1. Why rag
大型预训练语言模型经过fine-tuning应用在下游NLP任务中表现良好,但是在知识密集型任务中表现不佳,甚至出现“幻觉”问题。同时,大模型也不能提供做出决策的信息源和及时更新最新知识。因此提出了RAG(Retrieval Augmented Generation),通过外部知识库来解决大模型的幻觉问题。
2. What rag
用户输入Query --> Query语义向量化 --> 在向量数据库中检索找到相关知识片段 --> 构建Prompt: {Query + 相关上下文} --> 交给大模型生成回复 --> 返回最终回答
3. How rag
3.1 文件内容提取
将资料文档如:txt、docx、xlsx、pptx、jpg、png等的文本内容提取出来。
3.2 向量数据库
将提取到的文本内容,切分为chunk知识块,并将知识块文本存入向量知识库。
3.3 根据用户Query召回向量库的知识
一般是混合召回:通过ElasticSearch(bm_25算法)工具,稀疏召回知识;通过embedding模型密集召回向量库中的知识;
3.3 大模型提示词
示例:
## 角色
你是一名经验丰富的xx领域专家,擅长通过用户提供的文本来回答用户的问题。
## 要求
1. 严格根据用户提供的文本来回答问题,直接输出回答结果,禁止输出无关内容。
2. 如果用户提供的文本内容和问题不相关,则直接回答不知道,禁止回答其它内容或胡乱回答。
## 工作流
1. Think step by step。
2. 理解用户问题,并根据用户提供的文本内容回答。
3. 如果能够根据文本内容来回答问题,则直接输入答案,否则直接回答不知道。
用户提供的文本内容:{{context}}
用户的问题: {{query}}
你的回答:
4. 优化
4.1 提高回答准确率
- 预存问答对,先通过预存问答对回答,然后通过rag保底。
- rerank调优
4.2 减小响应时间
- 缓存召回结果
- 加速推理,加资源。

浙公网安备 33010602011771号