LangChain 作为一个以 LLM 模型为核心的开发框架出现,为自然语言处理开启了一个充满可能性的世界。借助 LangChain,我们可以创建各种应用程序,包括聊天机器人和智能问答工具。
LangChain社区的star数量已经达到84K,做为一名程序员,非常有必要熟练的使用这个框架。
接下来,手把手的教大家怎样使用langchain和postgresql向量数据库,实现最简单的知识库。
STEP1: 安装postgresql和pgvector插件
详情参考我之前的文章:AI编程之手把手教你在CentOS安装Postgresql的Vector向量数据库
STEP2: 安装各种依赖库
psycopg2,是Python语言的PostgreSQL数据库接口。它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持。它适用于随时创建、销毁大量游标的、和产生大量并发INSERT、UPDATE操作的多线程数据库应用。Psycopg包内含 ZPsycopgDA,一个Zope数据库接口。
执行下面的命令安装pgvector依赖和psycopg2依赖:
sudo pip install --upgrade pgvector
sudo pip install --upgrade psycopg2-binary
STEP3:代码秀
使用python简单的做知识库构建确实很简单,相较而言JAVA语言比较复杂,要自己实现EmbeddingStore。参见我前面的文章:
AI编程之手把手教你使用postgresql向量数据库建设知识库JAVA版
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores.pgvector import PGVector
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
loader = TextLoader("/Users/***/docs/demo.txt")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=0)
docs = text_splitter.split_documents(documents)
#初始化openai
embeddings = OpenAIEmbeddings(openai_api_key="*** ",openai_api_base="***")
#初始化postgresql连接串
CONNCTION_STRING = PGVector.connection_string_from_db_params(
host="*.*.*.*",
port=5432,
database="leotest1",
user="leotest",
password="****",
driver="psycopg2"
)
#把拆分后的文档,通过openai embedding向量化存储到postgresql向量库里。
COLLECTION_NAME = "leokbpython"
db = PGVector.from_documents(
embedding = embeddings,
documents = docs,
collection_name = COLLECTION_NAME,
connection_string = CONNCTION_STRING,
)
#检索一下知识库看看
query = "今年五一旅游火爆吗?"
docs_with_score = db.similarity_search_with_score(query)
for doc, score in docs_with_score:
print("-" * 80)
print("Score: ", score)
print(doc.page_content)
print("-" * 80)
程序输出:
STEP4:看看向量数据库里的存储内容
STEP5: 后续
后续将使用langchain,实现更多的CASE,敬请关注。
作者简介:
leo,互联网大厂AI架构师,欢迎私信交流