LangChain结合milvus向量数据库以及GPT3.5结合做知识库问答之二 --->代码实现

python 复制代码
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.embeddings.cohere import CohereEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.chains import RetrievalQAWithSourcesChain
import os
from langchain.llms import OpenAI

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")

chain = None


def do_work():
    global chain
    loader = PyPDFLoader("./王天龙-算法工程师-研究生.pdf")
    docs = loader.load_and_split()
    embeddings = OpenAIEmbeddings()

    vector_db = Milvus.from_documents(
        docs,
        embeddings,
        connection_args={
            "host": "ljxwtl.cn", "port": "19530"
        }
    )

    chain = RetrievalQAWithSourcesChain.from_chain_type(
        OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY),
        chain_type="map_reduce",
        retriever=vector_db.as_retriever()
    )


def __test_do_work():
    do_work()


def query(question):
    global chain

    response = chain(
        inputs={"question": question},
        return_only_outputs=True
    )
    print(response)


def __test_query():
    query("王天龙的简介")


if __name__ == '__main__':
    __test_do_work()
    __test_query()
bash 复制代码
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.embeddings.cohere import CohereEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.chains import RetrievalQAWithSourcesChain
import os
from langchain.llms import OpenAI

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")

chain = None


def do_work():
    global chain
    loader = PyPDFLoader("./王天龙-算法工程师-研究生.pdf")
    docs = loader.load_and_split()
    embeddings = OpenAIEmbeddings()

    vector_db = Milvus.from_documents(
        docs,
        embeddings,
        connection_args={
            "host": "ljxwtl.cn", "port": "19530"
        }
    )

    chain = RetrievalQAWithSourcesChain.from_chain_type(
        OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY),
        chain_type="map_reduce",
        retriever=vector_db.as_retriever()
    )


def __test_do_work():
    do_work()


def query(question):
    global chain

    response = chain(
        inputs={"question": question},
        return_only_outputs=True
    )
    print(response)


def __test_query():
    query("王天龙的工作经验")


if __name__ == '__main__':
    __test_do_work()
    __test_query()
相关推荐
SkyWalking中文站2 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
₍˄·͈༝·͈˄*₎◞ ̑̑码3 小时前
MyBatis操作数据库
数据库·mybatis
ToTensor5 小时前
DataGen——合成数据生成器:把一句任务描述变成可校验的训练数据
langchain·agent
刃神太酷啦5 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
丁丁点灯o6 小时前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
天天进步20156 小时前
Pixelle-Video 源码解析 #18:声音克隆功能:参考音频如何影响解说效果?
数据库·音视频
不懂的浪漫6 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库
布莱克6056 小时前
Redis 详解:从核心数据结构到高可用架构
数据库
冰暮流星7 小时前
mysql之左外连接与右外连接
数据库·sql
jyOverQ7 小时前
MySQL 联合索引怎么用?最左匹配原则到底是什么意思?
数据库·mysql