在载入知识库文件的时候,直接上传文档虽然能实现基础的问答,但是,其效果并不能发挥到最佳水平。因此,我们建议开发者对知识库文件做出以下的预处理。 以下方式的预处理如果执行了,有概率提升模型的召回率。

1. 使用TXT / Markdown 等格式化文件,并按照要点排版

例如,以下段落应该被处理成如下内容后在嵌入知识库,会有更好的效果。

原文: PDF类型
查特查特团队荣获AGI Playground Hackathon黑客松“生产力工具的新想象”赛道季军
2023年10月16日, Founder Park在近日结束的AGI Playground Hackathon黑客松比赛中,查特查特团队展现出色的实力,荣获了“生产力工具的新想象”赛道季军。本次比赛由Founder Park主办,并由智谱、Dify、Zilliz、声网、AWS云服务等企业协办。
比赛吸引了120多支参赛团队,最终有36支队伍进入决赛,其中34支队伍成功完成了路演。比赛规定,所有参赛选手必须在短短的48小时内完成一个应用产品开发,同时要求使用智谱大模型及Zilliz向量数据库进行开发。
查特查特团队的现场参赛人员由两名项目成员组成:
来自A大学的小明负责了Agent旅游助手的开发、场地协调以及团队住宿和行程的安排;在保证团队完赛上做出了主要贡献。作为队长,栋宇坚持自信,创新,沉着的精神,不断提出改进方案并抓紧落实,遇到相关问题积极请教老师,提高了团队开发效率。
作为核心开发者的B公司小蓝,他则主管Agent智能知识库查询开发、Agent底层框架设计、相关API调整和UI调整。在最后,他代表团队在规定的时间内呈现了产品的特点和优势,并完美的展示了产品demo。为团队最终产品能够得到奖项做出了重要贡献。
 

修改后的Markdown文件,具有更高的召回率

# 查特查特团队荣获AGI Playground Hackathon黑客松“生产力工具的新想象”赛道季军。

## 报道简介
2023年10月16日, Founder Park在近日结束的AGI Playground Hackathon黑客松比赛中,查特查特团队展现出色的实力,荣获了“生产力工具的新想象”赛道季军。本次比赛由Founder Park主办,并由智谱、Dify、Zilliz、声网、AWS云服务等企业协办。

## 比赛介绍

比赛吸引了120多支参赛团队,最终有36支队伍进入决赛,其中34支队伍成功完成了路演。比赛规定,所有参赛选手必须在短短的48小时内完成一个应用产品开发,同时要求使用智谱大模型及Zilliz向量数据库进行开发。

## 获奖队员简介

+ 小明,A大学
  + 负责Agent旅游助手的开发、场地协调以及团队住宿和行程的安排
  + 在保证团队完赛上做出了主要贡献。作为队长,栋宇坚持自信,创新,沉着的精神,不断提出改进方案并抓紧落实,遇到相关问题积极请教老师,提高了团队开发效率。

+ 小蓝,B公司
  + 主管Agent智能知识库查询开发、Agent底层框架设计、相关API调整和UI调整。
  + 代表团队在规定的时间内呈现了产品的特点和优势,并完美的展示了产品demo。
 

2. 减少文件中冲突的内容,分门别类存放数据

就像人类寻找相关点一样,如果在多份文件中存在相似的内容,可能会导致模型无法准确的搜索到相关内容。 因此,需要减少文件中相似的内容,或将其分在不同的知识库中。 例如,以下两个句子中,如果搜索外籍教师,则具有歧义,非常容易搜索到错误答案。

文件一:
在大数据专业中,我们已经拥有超过1/3的外籍博士和教师。

文件二:

本专业具有40%的外籍教师比例,
本专业有博士生10人,研究生12人。
 

3. 减少具有歧义的句子

知识库中应该减少具有歧义的句子和段落,或者汉语的高级用法,例如

1. 他说他会杀了那个人。
2. 你说啥子?
3. 我喜欢你的头发。
4. 地板真的滑,我差点没摔倒。
 

在相似度模型对比的时候,仅仅能搜索句子的表面意思,因此,使用有歧义的句子和段落可能导致搜索错误。

4. 减少单个文件的大小,减少文件中的特殊符号

  • 上传知识库的单个文件不建议超过5MB,以免出现向量化中断卡死等情况。同时,上传大文件不要使用faiss数据库。
  • 减少上传文件中的中文符号,特殊符号,无意义空格等。

自定义的关键词调整Embedding模型

1.首先准备一个关键字的文本文件,每一行是一个关键字。例如:

文件key_words.txt:
iphone13pro
中石油
 
  1. 配置kb_config.py
EMBEDDING_KEYWORD_FILE = "embedding_keywords.txt"
 
  1. 运行embeddings/add_embedding_keywords.py
输入的文本(这里只是一个没分隔的一串字符):iphone13pro
生成的token id序列:[101, 21128, 102]
token到token id的映射:
[CLS]->101
iphone13pro->21128
[SEP]->102

输入的文本:中石油
生成的token id序列:[101, 21129, 102]
token到token id的映射:
[CLS]->101
中石油->21129
[SEP]->102
 

这样,你就获得了一个新的带有关键词调整的Embedding模型

 

https://github.com/chatchat-space/Langchain-Chatchat/wiki

posted on 2024-07-20 09:58  风生水起  阅读(30)  评论(0编辑  收藏  举报