向量数据库的应用(大模型智能问答系统,RAG)
利用zilliz向量数据库来搭建自己的智能问答系统
·
大模型外挂知识库,是行业领域的常用操作,有必要学习一下~

首先在zilliz(cloud.zilliz.com.cn)上注册,启动实例然后创建一个集群,zilliz就会给出一个集群地址,设置好自己的用户名和密码,就可以用了。

然后在python中使用就可以啦:
# Install or upgrade the required packages
! python3 -m pip install --upgrade pymilvus langchain openai tiktoken
from os import environ
# Set up environment variables
ZILLIZ_ENDPOINT = "https://in01-4c18d4ae9d2398b.ali-cn-hangzhou.vectordb.zilliz.com.cn:19530"
ZILLIZ_USER = "db_admin"
ZILLIZ_PASS = "xxx" # Replace with actual password
OPENAI_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Replace with actual open API key
environ["OPENAI_API_KEY"] = OPENAI_API_KEY
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Zilliz
from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import CharacterTextSplitter
# 使用WebBaseLoader加载指定页面,根据需求输入网址
loader = WebBaseLoader([
"https://milvus.io/docs/overview.md",
])
docs = loader.load()
# 使用文本分割器将文档分割成指定大小的块
text_splitter = CharacterTextSplitter(chunk_size=2048, chunk_overlap=0)
docs = text_splitter.split_documents(docs)
print(len(docs)) # Print the number of documents
print(docs[0]) # Print the first document
# 指定用来将文档转换成对应向量表示的 Embedding 模型
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
# 创建一个向量数据库来保存文档的向量表示,这里我们使用 zilliz Cloud 来创建该数据库,它有直接的接口,直接将文档转成向量并传入向量数据库,可以在zilliz中看到的。
vector_store = Zilliz.from_documents(
docs,
embedding=embeddings,
connection_args={"uri": ZILLIZ_ENDPOINT, "user": ZILLIZ_USER, "password": ZILLIZ_PASS, "secure": True}
)
#用LangChain来搭建智能问答系统
from langchain.chains.qa_with_sources import load_qa_with_sources_chain
from langchain.llms import import OpenAI
chain = load_qa_with_sources_chain(OpenAI(temperature=0), chain_type="map_reduce", return_intermediate_steps=True) #详情请见LangChain的文档
#问答实例
query = "What is milvus?"
docs = vector_store.similarity_search(query)
res = chain({"input_documents": docs, "question": query}, return_only_outputs=True)
print("Question: " + query + "\n")
print("Answer: " + res['output_text'])
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)