编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Milvus与Langchain集成(langchain中文文档)

wxchong 2024-08-19 23:40:27 开源技术 14 ℃ 0 评论

之前讲过大模型应用架构图,现在从实际应用场景代码出发,讲解如何从大文本例如文档doc,pdf文本等文本进行QA

一.核心要点:

1.embedding model

2.语义相似性检索

二.解决方案:

1.openai的embedding向量化文档

2.milvus向量数据库存储向量数据并且相似性检索

三.步骤如下:

1.安装需要的环境包(数据库客户端,langchain,openai等)

pip install --upgrade pymilvus langchain openai tiktoken

2.引入全局变量变量

from os import environ

MILVUS_HOST = "localhost" #向量数据库主机

MILVUS_PORT = "19530" ##向量数据库端口

OPENAI_API_KEY = "sk-******" # example: "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 自己申请的openai申请key,token使用量使用tiktoken计算

environ["OPENAI_API_KEY"] = OPENAI_API_KEY

3.准备数据阶段

from langchain.embeddings.openai import OpenAIEmbeddings

from langchain.vectorstores import Milvus

from langchain.document_loaders import WebBaseLoader

from langchain.text_splitter import CharacterTextSplitter

#引入webload加载一篇网络文章

loader = WebBaseLoader([

"https://milvus.io/docs/overview.md",

])

docs = loader.load()

#按照1024大小切分

text_splitter = CharacterTextSplitter(chunk_size=1024, chunk_overlap=0)

docs = text_splitter.split_documents(docs)

4.向量化步骤3的数据

#使用openai的text-embedding-ada-002

embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")

#向量化存储到mivlus向量数据库里

vector_store = Milvus.from_documents(

docs,

embedding=embeddings,

connection_args={"host": MILVUS_HOST, "port": MILVUS_PORT}

)

5.开启相似性检索查询样例

query = "What is milvus?"

#根据语义相似度最高topk返回

docs = vector_store.similarity_search(query)

print(docs)

6.集成langchain进行qa

#引入相关langchain的包

from langchain.chains.qa_with_sources import load_qa_with_sources_chain

from langchain.llms import OpenAI

#采用mr进行

chain = load_qa_with_sources_chain(OpenAI(temperature=0), chain_type="map_reduce", return_intermediate_steps=True)

query = "What is Milvus?"

chain({"input_documents": docs, "question": query}, return_only_outputs=True)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表