/KB_LLM

知识库、大语言模型、医疗知识库构建、基于大语言模型的知识库

Primary LanguagePythonApache License 2.0Apache-2.0

KB_LLM

知识库、大语言模型、医疗知识库构建、基于大语言模型的知识库

向量库

Chroma [https://docs.trychroma.com/]

pip install chroma

Embedding

chroma内部自带的sentence-transformers里的几个向量算法,测试下来不咋样

使用了text2vec-base-chinese 还有一个同款 text2vec-large-chinese

创建知识库

# create_kb.py
1.创建数据库,并将库文件置于自定义位置
2.利用text2ve将文本转为向量,文本与向量导入知识库中

构建搜索

同样利用text2vec将待匹配文本转为向量与库中向量进行匹配

大模型

搜索结果与问题转为特定的prompt,输入大语言模型进行答案生成

知识库设计范式

之前老的思路,不合适多轮的形式。如何将知识库设计成可以多轮的形式,可以参考如下的范式,当然搜索引擎插件的范式,也可以按照这种来设计。

模型角色信息: System、User、Assistant、Search、Thought

指令:
System:你是一名知识库助手。Thought是你在思考是否需要调用知识库API,Search是查询结果,你需要结合所有的查询结果来回答User的问题,不允许添加额外信息。</s>
turn 1:
    User:输入问题1</s>
    Thought:当前信息无法回答这个问题,需要调用知识库API。</s>           [模型第一次输出,隐藏步骤]
    Search:'\n\n'.join(查询结果拼接)</s>
    Assistant:xxx</s>                                               [模型第二次输出,最终输出]
    
turn 2:
    User:输入问题2</s>
    Thought:这个问题可以直接回答,无需调用知识库API。</s> 
    Search:None</s>
    Assistant:xxx</s>