以下是一些可用于对作为知识库的数据进行预处理的软件和方法:
知识库方法的数据组织还有一种方法是使用知识库的方法。代表作langchain-chatGLM。这里对于知识库内容的组织要求比较高,但是不需要微调训练,我个人觉得很适合比较有结构、界限分明的数据。在这里,之前neo4j组织的或者是字典组织的数据就比较有用了。我这里用langchain库的比对,递进将字典的关键词keys部分进行比对,找到相似度最高的相关keys对应的内容文本,这样更好地获得相关的文本内容,送进提示词模板(prompt_template),然后送到LLM进行后处理。我这里的想法是可以把相关相似的关键词进行替换和扩充,这里借鉴了KG知识图谱开源代码的方法。prompt_template="""已知信息:{context}根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说“根据已知信息无法回答该问题”或“没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。问题是:{question}"""我觉得知识库方法最重要是context定位内容要足够准确,取代之前找资料库中和问题相似内容前后都加一点点buffer的方法,这样子更好避免错误和幻觉。这里是我测试的随便写的,可见回答比较鲁棒,不会很多变。[heading1]总结[content]很细枝末节地总结了我做这种dirty hard但很重要的工作。希望对你有所帮助。如果你有更高效的方法,请你不吝赐教。
1.问题解析阶段:2.接收并预处理问题,通过嵌入模型(如Word2Vec、GloVe、BERT)将问题文本转化为向量。这一步确保问题向量能有效用于后续检索。3.知识库检索阶段:4.知识库中的文档同样向量化后,比较问题向量与文档向量,选择最相关的信息片段。抽取相关信息传递给下一步骤5.信息整合阶段:6.接收检索到的信息,与上下文构建形成融合、全面的信息文本。整合信息准备进入生成阶段。7.大模型生成回答:整合后的信息被转化为向量并输入到LLM(大语言模型)。模型逐词构建回答,最终输出给用户。四、RAG实例看理论有点懵是吗?为了更理解,我们来一起看看实例。这是调试预览中的对话示例。在回复中,可以看到这里有写11条引用,3条上下文,我们具体来看下,有什么处理。一、知识库检索部分1、把输入的问题,通过Embedding做了向量化2、使用qwen语言模型把问题做了优化、添加了接近的检索词3、知识库向量检索,抽取条件包含相似度0.854、通过检索一共抽取出了11个内容块(chunk)二、大模型对话部分(因为我刷新后丢失了记录,改成说了一句:你好,所以下边的问题,变成了你好)
|上传方式|操作步骤||-|-||API|获取在线API的JSON数据,将JSON数据上传至知识库。<br>1.在表格格式页签下,选择API,然后单击下一步。<br>2.单击新增API。<br>3.输入网址URL并选择数据的更新频率,然后单击下一步。<br>4.输入单元名称或使用自动添加的名称,然后单击下一步。<br>5.配置数据表信息后,单击下一步。<br>5.1.确认表结构:系统已默认获取了表头的列名,你可以自定义修改列名,或删除某一列名。<br>5.2.指定语义匹配字段:选择哪个字段作为搜索匹配的语义字段。在响应用户查询时,会将用户查询内容与该字段内容的内容进行比较,根据相似度进行匹配。<br>6.查看表结构和数据,确认无误后单击下一步。<br>7.完成上传后,单击确定。||自定义|手动创建数据表结构和数据。<br>1.在表格格式页面下,选择自定义,然后单击下一步。<br>2.输入单元名称。<br>3.在表结构区域添加字段,单击增加字段添加多个字段。<br>4.设置列名,并选择指定列字段作为搜索匹配的语义字段。在响应用户查询时,会将用户查询内容与该字段内容的内容进行比较,根据相似度进行匹配。<br>5.单击确定。<br>6.单击创建分段,然后在弹出的页面输入字段值,然后单击保存。|