Skip to content

6 知识库

6.1 知识库工具

ragflow是一个rag知识库工具,它可以帮助用户构建rag知识库,并且可以通过ragflow提供的api来进行rag知识库的管理。

6.2 RAG知识库调优法

1 数据清洗和结构化

1.1 数据清洗

在构建 RAG(Retrieval - Augmented Generation,检索增强生成)知识库时,数据清洗是至关重要的第一步。原始数据通常包含大量的噪声,例如拼写错误、语法错误、重复内容、无效字符和乱码等。这些噪声不仅会占用存储空间,还会影响后续的检索和生成质量。

  1. 拼写和语法检查:使用专业的拼写和语法检查工具,如 LanguageTool、Grammarly 等,对文本数据进行检查和修正。例如,对于知识库中的文档内容,如果出现类似“thier”(应为“their”)这样的拼写错误,通过工具可以快速发现并纠正。
  2. 去除重复内容:利用哈希算法或其他去重技术,识别并删除重复的文档或段落。比如,在收集的大量行业报告中,可能存在部分内容完全相同的情况,通过计算文本的哈希值,将哈希值相同的内容进行去重处理。
  3. 清理无效字符和乱码:编写正则表达式来匹配和删除文本中的无效字符,如特殊的控制字符、乱码符号等。例如,对于一些从不同来源采集的数据中可能出现的不可见控制字符,可以使用正则表达式“[-1F]”进行匹配和删除。

1.2 数据结构化

将清洗后的数据进行结构化处理,能够提高数据的组织性和可检索性。

  1. 定义数据模式:根据知识库的应用场景和需求,确定数据的模式。例如,如果是一个医疗领域的 RAG 知识库,数据模式可能包括疾病名称、症状、诊断方法、治疗方案等字段。
  2. 标注和分类:对数据进行标注和分类,以便于后续的检索和筛选。比如,将新闻文章按照政治、经济、文化等类别进行分类,并标注文章的关键词、作者、发布时间等信息。
  3. 构建知识图谱:对于一些关系复杂的数据,可以构建知识图谱。以电商领域为例,通过构建知识图谱,可以清晰地展示商品之间的关联关系,如品牌 - 产品、产品 - 配件等,从而提高检索的准确性和全面性。

2 选择合适的嵌入模型

嵌入模型的作用是将文本数据转换为向量表示,以便在向量空间中进行相似度计算和检索。选择合适的嵌入模型对于 RAG 知识库的性能至关重要。

  1. 基于预训练的语言模型:如 BERT(Bidirectional Encoder Representations from Transformers)、GPT - Embeddings 等。这些模型在大规模语料上进行预训练,能够捕捉文本的语义信息。例如,BERT 可以根据上下文生成动态的词向量表示,对于具有多义性的词语能够给出准确的语义表示。在处理法律文档时,对于“合同”一词,BERT 能够根据具体的上下文准确地生成其语义向量。
  2. 特定领域的嵌入模型:如果知识库专注于某个特定领域,如生物医学、金融等,可以选择针对该领域训练的嵌入模型。例如,BioBERT 是在生物医学文献上对 BERT 进行微调的模型,对于生物医学领域的术语和概念具有更好的语义表示能力。在处理医学研究论文时,BioBERT 能够更准确地将医学术语转换为向量,提高检索的相关性。
  3. 模型性能评估:在选择嵌入模型时,需要通过实验来评估其性能。可以使用一些公开的数据集和评估指标,如余弦相似度、准确率、召回率等。例如,在一个新闻检索场景中,将不同嵌入模型生成的向量用于检索相关新闻文章,通过计算检索结果的准确率和召回率来比较不同模型的性能,选择性能最优的模型。

3 设置系统提示词

系统提示词是引导语言模型生成合适回答的关键。合理设置系统提示词可以提高生成答案的准确性和相关性。

  1. 明确任务描述:在提示词中清晰地说明任务的性质。例如,如果是一个问答系统,提示词可以写成“请根据给定的知识库信息,准确回答以下问题:[问题内容]”。这样可以让语言模型明确知道需要从知识库中检索信息并进行回答。
  2. 提供示例:为了让语言模型更好地理解任务要求,可以提供一些示例。比如,“以下是问题和对应的正确答案示例:问题:’苹果公司成立于哪一年?’答案:’苹果公司成立于 1976 年。’请按照此格式回答后续问题。”通过示例,语言模型能够学习到期望的回答格式和内容风格。
  3. 引导回答风格:根据应用场景的需求,引导语言模型生成特定风格的回答。例如,如果是一个面向儿童的教育知识库,提示词可以写成“请用简单易懂、生动有趣的语言回答以下问题:[问题]”,从而使生成的答案更适合儿童理解。

4 调整 LLM 温度

LLM(Large Language Model,大语言模型)中的温度参数控制着生成结果的随机性。

  1. 温度的作用原理:温度参数影响着模型在生成下一个词时的概率分布。当温度较低(接近 0)时,模型更倾向于选择概率最高的词,生成的结果更加确定和保守。例如,在生成新闻标题时,较低的温度可能会生成比较常规、准确的标题。而当温度较高时,模型会更多地考虑概率较低的词,生成的结果更加多样化和富有创意,但也可能会出现一些不太准确或不符合逻辑的内容。比如在生成创意写作的文本时,较高的温度可以带来更多新颖的想法。
  2. 根据场景调整温度:在 RAG 知识库的应用中,需要根据具体场景来调整温度。如果是需要精确答案的场景,如数学计算、事实性问答等,应将温度设置得较低,以确保生成的答案准确可靠。例如,对于问题“123 + 456 等于多少?”,较低温度下模型更可能准确地回答“579”。而在一些需要创意和多样性的场景,如文本创作、故事生成等,可以适当提高温度,以获得更丰富的生成结果。

5 更改搜索偏好

搜索偏好的设置会影响从知识库中检索信息的方式和结果。

  1. 关键词权重调整:在进行检索时,可以根据关键词的重要性调整其权重。例如,在一个科技知识库中,如果搜索“人工智能芯片”,可以将“人工智能”和“芯片”这两个关键词赋予不同的权重。如果更关注芯片在人工智能领域的应用,那么可以适当提高“芯片”的权重,使得检索结果更侧重于相关的芯片技术在人工智能中的应用文档。
  2. 检索范围设定:可以设定检索的范围,如只在特定的文档类别或时间段内进行检索。比如,在一个企业内部知识库中,如果只想检索近一年来的技术报告,可以设置检索的时间范围为最近一年,从而提高检索效率和相关性。
  3. 多模态搜索:对于包含图像、音频等多模态数据的知识库,可以支持多模态搜索偏好。例如,用户可以通过上传一张图片,系统根据图片的内容在知识库中检索相关的文本信息,如产品介绍、使用说明等。

6 合理设置上下文片段数

在 RAG 系统中,上下文片段数的设置影响着模型获取信息的范围和生成答案的质量。

  1. 上下文片段的作用:上下文片段包含了与问题相关的知识库信息,模型根据这些片段生成回答。适当数量的上下文片段可以为模型提供足够的信息来准确回答问题。例如,在回答一个复杂的历史问题时,多个上下文片段可以提供不同时期的背景信息、相关事件等,帮助模型全面地回答问题。
  2. 片段数的影响:如果上下文片段数过少,模型可能缺乏足够的信息来给出准确的答案。比如,只提供一个简短的文档片段来回答一个涉及多方面知识的问题,模型可能无法涵盖所有相关内容。而如果片段数过多,可能会引入无关信息,增加模型处理的负担,甚至导致生成的答案混乱。
  3. 确定合适的片段数:可以通过实验来确定合适的上下文片段数。在不同的数据集和任务上,尝试设置不同的片段数,观察模型的回答准确率、相关性等指标。例如,在一个科学知识问答任务中,从设置 1 - 10 个上下文片段进行实验,通过计算回答的准确率来确定最优的片段数。

7 调整文档相似度阈值

文档相似度阈值用于判断检索到的文档与问题的相关性程度。

  1. 相似度计算方法:常用的文档相似度计算方法有余弦相似度、Jaccard 相似度等。余弦相似度通过计算两个向量之间的夹角余弦值来衡量相似度,取值范围在 - 1 到 1 之间,值越接近 1 表示相似度越高。Jaccard 相似度则是通过计算两个集合的交集与并集的比例来衡量相似度。
  2. 阈值的作用:相似度阈值决定了哪些文档会被认为与问题相关并用于后续的生成。如果阈值设置过高,可能会导致检索到的文档数量过少,甚至找不到相关文档