Pinecone
Pinecone 是託管型向量資料庫:你負責 embedding 與資料模型,它負責索引、擴展與低延遲查詢。適合不想自架叢集、想把 RAG 儘快接到正式環境的團隊。
本頁只講上手時一定會碰到的 20%。示範與影片見 Pinecone 影音。
什麼時候選它
- 要雲端託管、少碰基礎設施。
- 查詢要帶 metadata filter(例如語言、租戶、時間)。
- 與 LangChain、LlamaIndex 等框架整合。
相對地,本機離線試作通常會先用 Chroma 或 FAISS;已有 PostgreSQL 則看 pgvector。
核心物件
| 名稱 | 作用 |
|---|---|
| API key | 連線憑證,放環境變數 PINECONE_API_KEY,不要寫進程式庫。 |
| Index | 一組同維度、同度量的向量集合。建立後 dimension/metric 不能改。 |
| Namespace | 同一個 index 裡的邏輯分區,常見用法是依租戶或資料來源切開。 |
| Record | id + 向量 + metadata。upsert 是「有則更新、無則插入」。 |
目前預設走 serverless index(指定 cloud/region 即可),不必自己管 replica。
最小流程
建立 index 時,dimension 必須等於嵌入模型輸出長度,metric 建議文字任務用 cosine。
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(api_key="YOUR_API_KEY")
pc.create_index(
name="quickstart",
dimension=1536,
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)
index = pc.Index("quickstart")
index.upsert(
vectors=[
{"id": "1", "values": [0.1, 0.2, 0.3], "metadata": {"topic": "refund"}},
],
namespace="docs",
)
result = index.query(
vector=[0.1, 0.2, 0.3],
top_k=3,
include_metadata=True,
namespace="docs",
filter={"topic": {"$eq": "refund"}},
)
實際專案會先呼叫嵌入 API,再把回傳的 list 當 values。官方新版也支援在 Pinecone 端做 embedding 與 rerank,細節以 Quickstart 為準。
實務注意
- Metadata 過濾發生在向量搜尋過程中,不是搜完再砍。filter 太嚴可能讓 top-k 變空,要在應用層處理。
- Namespace 不會改變維度,只是隔離資料;計費與 index 設定仍共用。
- SDK 版本更新快。若範例裡的
create_index與你安裝的套件不符,以官方 Python SDK 文件為準。
官方學習資源
官方 YouTube
Pinecone 頻道 有 serverless 入門與 Quickstart 走讀。彙整見 Pinecone 影音。
官方文件與 Learn
文件 Quickstart 與 Pinecone Learn(含 LangChain/RAG 系列)。目前沒有獨立的原廠證照考試,Learn 與官方影片就是主要路徑。