您的位置:首页 > 财经 > 金融 > 网站建设多长时间_传媒公司招主播骗局_免费发布友链_郑州网站seo技术

网站建设多长时间_传媒公司招主播骗局_免费发布友链_郑州网站seo技术

2025/3/5 0:15:46 来源:https://blog.csdn.net/qq_75269600/article/details/145995854  浏览:    关键词:网站建设多长时间_传媒公司招主播骗局_免费发布友链_郑州网站seo技术
网站建设多长时间_传媒公司招主播骗局_免费发布友链_郑州网站seo技术

如何使用 langchain-weaviate 包在 LangChain 中开始使用 Weaviate 向量存储。

Weaviate 是一个开源的向量数据库。它允许您存储来自您喜爱的机器学习模型的数据对象和向量嵌入,并能够无缝地扩展到数十亿个数据对象。

官方文档:Home | Weaviate

要使用此集成,您需要运行一个 Weaviate 数据库实例。

最低版本

此模块需要 Weaviate 1.23.7 或更高版本。但是,我们建议您使用最新版本的 Weaviate。

连接到 Weaviate

在本文中,我们假设您在 http://localhost:8080 上运行了一个本地的 Weaviate 实例,并且端口 50051 用于 gRPC 通信。因此,我们将使用以下代码连接到 Weaviate:

weaviate_client = weaviate.connect_to_local()
其他部署选项

Weaviate 可以以许多不同的方式进行部署,例如使用Weaviate Cloud Services (WCS)、Docker或Kubernetes。

如果您的 Weaviate 实例以其他方式部署,可以在此处信息关于连接到 Weaviate 的不同方式。您可以使用不同的辅助函数,或者创建一个自定义实例。

请注意,您需要一个 v4 客户端 API,它将创建一个 weaviate.WeaviateClient 对象。

认证

一些 Weaviate 实例,例如在 WCS 上运行的实例,启用了认证,例如 API 密钥和/或用户名+密码认证。

阅读客户端认证指南以获取更多信息,以及深入的认证配置页面。

安装

# 安装包
# %pip install -Uqq langchain-weaviate
# %pip install openai tiktoken langchain

环境设置
本文使用 OpenAIEmbeddings 通过 OpenAI API。我们建议获取一个 OpenAI API 密钥,并将其作为名为 OPENAI_API_KEY 的环境变量导出。
完成后,您的 OpenAI API 密钥将被自动读取。如果您对环境变量不熟悉,可以在此处或此指南中关于它们的信息。
配置Weaviate的WCD_DEMO_URL和WCD_DEMO_RO_KEY
 

setx WCD_DEMO_URL ""
setx WCD_DEMO_RO_KEY ""

用法

通过相似性查找对象

以下是一个示例,演示如何通过查询查找与之相似的对象,从数据导入到查询 Weaviate 实例。

步骤 1:数据导入

首先,我们将创建要添加到 Weaviate 的数据,方法是加载并分块长文本文件的内容。

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

现在,我们可以导入数据。要这样做,连接到 Weaviate 实例,并使用生成的 weaviate_client 对象。例如,我们可以将文档导入如下所示:

#示例:weaviate_client.py
weaviate_client = weaviate.connect_to_weaviate_cloud(cluster_url=wcd_url,  # Replace with your Weaviate Cloud URLauth_credentials=Auth.api_key(wcd_api_key),  # Replace with your Weaviate Cloud keyheaders={'X-OpenAI-Api-key': openai_api_key}  # Replace with your OpenAI API key
)
db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client)
第二步:执行搜索

现在我们可以执行相似度搜索。这将返回与查询文本最相似的文档,基于存储在 Weaviate 中的嵌入和从查询文本生成的等效嵌入。

#示例:weaviate_search.py
# pip install -Uqq langchain-weaviate
# pip install openai tiktoken langchain
import os
import weaviate
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
from langchain_weaviate.vectorstores import WeaviateVectorStore
from weaviate.classes.init import Authembeddings = OpenAIEmbeddings()
# 加载文档并将其分割成片段
loader = TextLoader("../../resource/knowledge.txt", encoding="UTF-8")
documents = loader.load()
# 将其分割成片段
text_splitter = CharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)# Best practice: store your credentials in environment variables
wcd_url = os.environ["WCD_DEMO_URL"]
wcd_api_key = os.environ["WCD_DEMO_RO_KEY"]
openai_api_key = os.environ["OPENAI_API_KEY"]weaviate_client = weaviate.connect_to_weaviate_cloud(cluster_url=wcd_url,  # Replace with your Weaviate Cloud URLauth_credentials=Auth.api_key(wcd_api_key),  # Replace with your Weaviate Cloud keyheaders={'X-OpenAI-Api-key': openai_api_key}  # Replace with your OpenAI API key
)
db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client)
query = "Pixar公司是做什么的?"
docs = db.similarity_search(query)
print(docs[0].page_content)
weaviate_client.close()
量化结果相似性

您可以选择检索相关性“分数”。这是一个相对分数,表示特定搜索结果在搜索结果池中的好坏程度。

请注意,这是相对分数,意味着不应用于确定相关性的阈值。但是,它可用于比较整个搜索结果集中不同搜索结果的相关性。

#示例:weaviate_similarity.py
query = "Pixar公司是做什么的?"
docs = db.similarity_search_with_score(query, k=5)
for doc in docs:print(f"{doc[1]:.3f}", ":", doc[0].page_content[:100] + "...")

输出结果

0.700 : During the next five years, I started a company named NeXT, another company named Pixar, and fell in...
0.337 : I was lucky – I found what I loved to do early in life. Woz and I started Apple in my parents garage...
0.271 : I really didn't know what to do for a few months. I felt that I had let the previous generation of e...
0.256 : I'm pretty sure none of this would have happened if I hadn't been fired from Apple. It was awful tas...
0.191 : Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its...

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com