向量数据库 AI 套件 + LLM 大模型:打造专属知识的问答服务

本操作使用 Python SDK 录入 腾讯云向量数据库的产品文档,构建向量数据库的语料库。

相关产品
向量数据库 产品页,含版本规格、价格与购买入口。

一、步骤1:导入 Python SDK 依赖库

import requestsimport jsonimport tcvectordbimport osfrom tcvectordb.model.enum import ReadConsistencyfrom tcvectordb.model.collection_view import Embedding

二、步骤2:创建客户端对象,连接数据库实例

vdbclient = tcvectordb.VectorDBClient(url='{your vdb url}', username='root', key='{your vdb key}')

三、步骤3:知识库初始化

声明 knowledgeInit() 函数,初始化知识库。

1. 为腾讯云向量数据库专有知识库创建一个 AI 类数据库 testdb。

2. 在已创建的 AI 类数据库中,创建集合视图 knowledge。

3. 上传 腾讯云向量数据库的产品文档 所有 md 文件于数据库集合视图中。

def knowledgeInit(): #创建DB db = vdbclient.create_ai_database(database_name='testdb') #创建CollectionView collView = db.create_collection_view(name='knowledge',embedding=Embedding(enable_words_embedding=True)) #上传文件 file_path = "{/yourLocalPath/files/}" for file_name in os.listdir(file_path): if file_name.endswith(".md"): print("\\n上传:"+file_name) collView.load_and_split_text(local_file_path=file_path+file_name) print('upload all file sucess')

四、步骤4:传入问题进行知识内容相似性检索

声明 searchKnowlege() 函数,传入用户 question,返回知识库中与用户 question 最相似的内容。

def searchKnowlege(question): db = vdbclient.database('testdb') collView = db.collection_view('knowledge') doc_list = collView.search( content=question, limit=3 ) knowledge = '' print("查询向量数据库:") for count,doc in enumerate(doc_list): print("知识条目:", count, "—————-") print(doc.data.text) knowledge += doc.data.text return knowledge

五、步骤5:将用户问题与知识库检索的相似性语料,送入百川大模型,生成问题答案

注意:说明:

注意:如下以 Baichuan2-Turbo 大模型为例,检索所获取的相似性语料将更有效地指引大语言模型(LLM) 进行逻辑推理,生成更准确的答案。

def generate_answer(msg): url = "https://api.baichuan-ai.com/v1/chat/completions" api_key = "baichuan_api_key" data = { "model": "Baichuan2-Turbo", "messages": [{ "role": "user", "content": msg }] } json_data = json.dumps(data) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + api_key } response = requests.post(url, data=json_data, headers=headers,timeout=60) if response.status_code == 200: print("============================================") print("知识条目+大模型推理回答:\\n", json.loads(response.text)["choices"][0]["message"]["content"]) else: print(response.text) print("请求失败,状态码:", response.status_code)

六、步骤6:构建 main() 函数

1. 调用 knowledgeInit() 初始化知识库。

2. 输入问题,调用 searchKnowledge() ,传入请求问题,在知识库检索与问题相似的知识。

3. 将检索结果的 Topk 条 knowledges 与输入的问题 question 进行内容组装。

4. 调用 generate_answer() ,传入组装后的内容,送入大模型,生成问题答案。

if __name__ == "__main__": knowledgeInit() question = input("请输入你的问题:\\n") print("问题:", question) print("============================================") knowledges = searchKnowlege(question) content = json.dumps({ "请回答问题": question, "背景知识如下": knowledges },ensure_ascii=False) generate_answer(content)

七、问答效果体验

腾讯云向量数据库产品文档中的一些内容,通用的大语言模型(LLM)在预训练时若没有相关的数据,出现了幻觉问题,导致在回答时的效果较差。在使用腾讯云向量数据库 AI 套件搭建知识库对大语言模型(LLM)进行知识补充后,如下三个问题都能准确地回答,对比只使用大语言模型(LLM)的效果显著提升。

八、问题1:什么是腾讯云向量数据库的 Embedding 功能?

·直接给大语言模型(LLM)输入问题,生成答案如下所示。

·经过向量数据库的 AI 套件从知识库中检索出相似的 TopK 条语料,再送入大模型,生成答案如下所示。

九、问题2:什么是腾讯云向量数据库中的 AI 套件?

·直接给大语言模型(LLM)输入问题,生成答案如下所示。

·经过向量数据库的 AI 套件从知识库中检索出相似的 TopK 条语料,再送入大模型,生成答案如下所示。

十、问题3:腾讯云向量数据库支持的最大 QPS

·直接给大语言模型(LLM)输入问题,生成答案如下所示。

·经过向量数据库的 AI 套件从知识库中检索出相似的 TopK 条语料,再送入大模型,生成答案如下所示。

赞 (0)
上一篇 4天前
下一篇 4天前