在LangChain中使用Milvus + openai使用

Milvus(opens in a new tab) 是一个存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大规模嵌入向量的数据库。

1.文档分割

from langchain.document_loaders import PyPDFLoader

'''
pdf
'''
loader = PyPDFLoader("D:\py\LangChaindao\操作系统原理.pdf")
docs = loader.load()
# 将文档拆分成更小的块
text_splitter = CharacterTextSplitter(chunk_size=1024, chunk_overlap=0)
docs = text_splitter.split_documents(docs)
from langchain.document_loaders import WebBaseLoader
'''
网页1
'''
loader = WebBaseLoader([
    #"https://zhuanlan.zhihu.com/p/105945721",
    # "https://www.zhihu.com/question/382955637",
    "https://baike.baidu.com/item/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/192"
])
docs = loader.load()
# 将文档拆分成更小的块
text_splitter = CharacterTextSplitter(chunk_size=1024, chunk_overlap=0)
docs = text_splitter.split_documents(docs)

2.使用嵌入 向量化存储+查找

目标是从我们的长文本中选择相关的块,但是我们要提取哪些块?最流行的方法是基于比较向量嵌入来提取相似的文本。
使用 OpenAIEmbeddings

def fun(docs):
    # 设置一个嵌入模型,将文档块转换为向量嵌入。
    embeddings = OpenAIEmbeddings(engine="text-embedding-ada-002")
    # print(embeddings)
    # 设置用于保存矢量嵌入的矢量存储。这里我们使用Milvus作为向量存储。
    Milvus.from_documents(
        docs,
        embedding=embeddings,
        connection_args={"host": HOST, "port": PORT}
    )

3.问答 向量化查询与返回topK

embeddings = OpenAIEmbeddings(engine="text-embedding-ada-002")
vector_store = Milvus.from_documents(
        "",
        embedding=embeddings,
        connection_args={"host": HOST, "port": PORT}
    )
query = "操作系统的发展历程?"
docs = vector_store.similarity_search(query)
print(docs)

topK

related_docs_with_score = vector_store.similarity_search_with_score(query,k=self.top_k)

在这里插入图片描述

4 .相关文档 以提示词的方式给openai 然后结合回答

chain = load_qa_with_sources_chain(AzureOpenAI(deployment_name=model, model_name="gpt-35-turbo", temperature=0),
                                   chain_type="map_reduce", return_intermediate_steps=True)
query = "操作系统的发展历程?"
# 包括intermediate_steps和output_text。前者指示搜索期间引用的文档,后者是问题的最终答案
data = chain({"input_documents": docs, "question": query}, return_only_outputs=False)
print(data)

在这里插入图片描述

来源:
1.[LangChain ️ 中文网]https://www.langchain.com.cn/modules/indexes/vectorstores/examples/milvus
2.[用 LangChain 和 Milvus 从零搭建 LLM 应用]https://zhuanlan.zhihu.com/p/644603736

你可能感兴趣的:(langchain,langchain,milvus,数据库)