跳轉至

建立 2026-09-15 更新 2026-09-15

Qdrant

Qdrant 是用 Rust 寫的開源向量搜尋引擎,可 Docker 自架或使用 Qdrant Cloud。設計上把「向量 + payload(中繼資料)」當一等公民,過濾、hybrid search(dense + sparse)與量化是它常被選用的原因。

本頁講最小心智模型;影片與認證見 Qdrant 影音

什麼時候選它

  • 要開源自架,又需要複雜的 payload filter。
  • 要同時做語意搜尋與關鍵字(BM25/sparse),再在伺服器端融合。
  • 希望有官方課程與證照路徑。

本機五分鐘試作也可用 in-memory client,不必先開 Cloud。

核心物件

名稱 作用
Collection 指定向量維度與距離(如 Cosine)。
Point 一筆資料:id、向量、可選的 payload。
Payload JSON 式中繼資料,能建 payload index 加速過濾。
Query query_points 是目前主 API,可 prefetch、融合、rerank。

距離在建立 collection 時鎖定。文字 embedding 用 Distance.COSINE

最小流程

from qdrant_client import QdrantClient, models

client = QdrantClient(":memory:")  # 本機檔案可改 path="qdrant_data"
client.create_collection(
    collection_name="docs",
    vectors_config=models.VectorParams(size=384, distance=models.Distance.COSINE),
)

client.upsert(
    collection_name="docs",
    points=[
        models.PointStruct(
            id=1,
            vector=[0.1, 0.2, 0.3],  # 實務上改為 embedding 模型輸出
            payload={"topic": "refund"},
        ),
    ],
)

hits = client.query_points(
    collection_name="docs",
    query=[0.1, 0.2, 0.3],
    query_filter=models.Filter(
        must=[models.FieldCondition(key="topic", match=models.MatchValue(value="refund"))]
    ),
    limit=3,
)

Cloud 則改傳 urlapi_key。官方五分鐘教學會用 sci-fi 書單做語意搜尋,見 Semantic Search 101

Dense 向量擅長同義詞,sparse(如 BM25)擅長精確詞(型號、錯誤代碼)。Qdrant 可對同一 collection 存兩種向量,查詢時 prefetch 兩邊再用 RRF(Reciprocal Rank Fusion)合併。這是 RAG 很常缺的一塊,官方工作坊有完整示範。

官方學習資源

官方認證課程

Qdrant AcademyEssentials 含影片、notebook 與期末專案,完成後可考 Qdrant Essentials Certificationtrain.qdrant.dev)。這是目前向量庫原廠證照裡最完整的一條。

官方 YouTube 與文件

頻道與工作坊影片見 Qdrant 影音。文字入門用 Semantic Search 101