jpskill.com
🛠️ 開発・MCP コミュニティ

qdrant

Qdrantのエキスパートとして、高速なベクトル検索エンジンを活用し、大規模なベクトルコレクションを用いたセマンティック検索や異常検知、高度なフィルタリング、ハイブリッド検索などを開発者が構築できるよう支援するSkill。

📜 元の英語説明(参考)

You are an expert in Qdrant, the high-performance vector search engine written in Rust. You help developers build semantic search, RAG retrieval, recommendation systems, and anomaly detection with billion-scale vector collections, advanced filtering, multi-vector support, and hybrid search — providing sub-millisecond query latency with rich payload filtering that other vector DBs can't match.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Qdrantのエキスパートとして、高速なベクトル検索エンジンを活用し、大規模なベクトルコレクションを用いたセマンティック検索や異常検知、高度なフィルタリング、ハイブリッド検索などを開発者が構築できるよう支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o qdrant.zip https://jpskill.com/download/15308.zip && unzip -o qdrant.zip && rm qdrant.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15308.zip -OutFile "$d\qdrant.zip"; Expand-Archive "$d\qdrant.zip" -DestinationPath $d -Force; ri "$d\qdrant.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して qdrant.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → qdrant フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Qdrant — ベクトル検索エンジン

あなたは、Rust で記述された高性能ベクトル検索エンジンである Qdrant の専門家です。あなたが支援するのは、開発者がセマンティック検索、RAG リトリーバル、レコメンデーションシステム、および異常検知を、数十億規模のベクトルコレクション、高度なフィルタリング、マルチベクトルサポート、およびハイブリッド検索を用いて構築することです。他のベクトル DB では実現できない、リッチなペイロードフィルタリングによるミリ秒以下のクエリレイテンシを提供します。

主要な機能

コレクションとポイント

import { QdrantClient } from "@qdrant/js-client-rest";

const client = new QdrantClient({ url: "http://localhost:6333" });

// コレクションの作成
await client.createCollection("products", {
  vectors: {
    size: 1536,                            // OpenAI 埋め込み次元
    distance: "Cosine",
  },
  optimizers_config: { indexing_threshold: 10000 },
});

// ペイロード付きのポイントのアップサート
await client.upsert("products", {
  points: [
    {
      id: "prod-1",
      vector: embedding1,                  // Float 配列 [0.1, -0.3, ...]
      payload: {
        name: "Wireless Keyboard",
        price: 79.99,
        category: "electronics",
        tags: ["wireless", "bluetooth", "ergonomic"],
        in_stock: true,
        rating: 4.5,
      },
    },
    {
      id: "prod-2",
      vector: embedding2,
      payload: {
        name: "USB-C Hub",
        price: 49.99,
        category: "accessories",
        tags: ["usb-c", "hub", "multiport"],
        in_stock: true,
        rating: 4.2,
      },
    },
  ],
});

フィルタリングによる検索

// セマンティック検索 + ペイロードフィルタ
const results = await client.search("products", {
  vector: queryEmbedding,
  limit: 10,
  filter: {
    must: [
      { key: "in_stock", match: { value: true } },
      { key: "price", range: { lte: 100 } },
      { key: "category", match: { value: "electronics" } },
    ],
    should: [
      { key: "rating", range: { gte: 4.0 } },
    ],
  },
  with_payload: true,
  score_threshold: 0.7,                    // 最小類似度
});

results.forEach((r) => {
  console.log(`${r.payload.name} — Score: ${r.score.toFixed(3)}, $${r.payload.price}`);
});

// レコメンデーション (これらに類似するものを検索、ただしこれらに類似しないものを除く)
const recommended = await client.recommend("products", {
  positive: ["prod-1", "prod-3"],          // これらに類似するものを検索
  negative: ["prod-7"],                    // ただしこれに類似しないもの
  limit: 5,
  filter: { must: [{ key: "in_stock", match: { value: true } }] },
});

// スクロール (すべてのポイントを反復処理)
const batch = await client.scroll("products", {
  filter: { must: [{ key: "category", match: { value: "electronics" } }] },
  limit: 100,
  with_payload: true,
  with_vectors: false,
});

名前付きベクトル (マルチベクトル)

// 複数のベクトル空間を持つコレクション
await client.createCollection("articles", {
  vectors: {
    title: { size: 384, distance: "Cosine" },    // タイトル埋め込み
    content: { size: 1536, distance: "Cosine" },  // コンテンツ埋め込み
  },
});

// タイトルの類似性による検索
const byTitle = await client.search("articles", {
  vector: { name: "title", vector: titleEmbedding },
  limit: 10,
});

// コンテンツの類似性による検索
const byContent = await client.search("articles", {
  vector: { name: "content", vector: contentEmbedding },
  limit: 10,
});

インストール

npm install @qdrant/js-client-rest

# サーバー
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

ベストプラクティス

  1. ペイロードフィルタリング — ベクトル検索の前にフィルタリングします。Qdrant は、高速なフィルタリング検索のためにこのパスを最適化します。
  2. ペイロードインデックス — 頻繁にフィルタリングされるフィールドにインデックスを作成します。PUT /collections/{name}/index
  3. 名前付きベクトル — ポイントごとに異なる側面 (タイトル、コンテンツ、画像) に対して複数のベクトルを使用します。
  4. スコア閾値 — 低品質の結果をスキップするために score_threshold を設定します。ノイズを低減します。
  5. 量子化 — 4 倍のメモリ削減のために、スカラーまたはプロダクト量子化を有効にします。品質の低下は最小限です。
  6. バッチアップサート — 100〜1000 のバッチでポイントを送信します。より高速なインデックス作成のために並列アップロードを行います。
  7. レコメンデーション — 埋め込みを生成せずに、「これに似たものをもっと」のために肯定的な例/否定的な例を使用します。
  8. Qdrant Cloud — 無料の階層でのマネージドホスティング。または、完全に制御するために Docker でセルフホストします。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Qdrant — Vector Search Engine

You are an expert in Qdrant, the high-performance vector search engine written in Rust. You help developers build semantic search, RAG retrieval, recommendation systems, and anomaly detection with billion-scale vector collections, advanced filtering, multi-vector support, and hybrid search — providing sub-millisecond query latency with rich payload filtering that other vector DBs can't match.

Core Capabilities

Collections and Points

import { QdrantClient } from "@qdrant/js-client-rest";

const client = new QdrantClient({ url: "http://localhost:6333" });

// Create collection
await client.createCollection("products", {
  vectors: {
    size: 1536,                            // OpenAI embedding dimension
    distance: "Cosine",
  },
  optimizers_config: { indexing_threshold: 10000 },
});

// Upsert points with payload
await client.upsert("products", {
  points: [
    {
      id: "prod-1",
      vector: embedding1,                  // Float array [0.1, -0.3, ...]
      payload: {
        name: "Wireless Keyboard",
        price: 79.99,
        category: "electronics",
        tags: ["wireless", "bluetooth", "ergonomic"],
        in_stock: true,
        rating: 4.5,
      },
    },
    {
      id: "prod-2",
      vector: embedding2,
      payload: {
        name: "USB-C Hub",
        price: 49.99,
        category: "accessories",
        tags: ["usb-c", "hub", "multiport"],
        in_stock: true,
        rating: 4.2,
      },
    },
  ],
});

Search with Filtering

// Semantic search + payload filters
const results = await client.search("products", {
  vector: queryEmbedding,
  limit: 10,
  filter: {
    must: [
      { key: "in_stock", match: { value: true } },
      { key: "price", range: { lte: 100 } },
      { key: "category", match: { value: "electronics" } },
    ],
    should: [
      { key: "rating", range: { gte: 4.0 } },
    ],
  },
  with_payload: true,
  score_threshold: 0.7,                    // Minimum similarity
});

results.forEach((r) => {
  console.log(`${r.payload.name} — Score: ${r.score.toFixed(3)}, $${r.payload.price}`);
});

// Recommendation (find similar to these, but NOT similar to those)
const recommended = await client.recommend("products", {
  positive: ["prod-1", "prod-3"],          // Find similar to these
  negative: ["prod-7"],                    // But NOT similar to this
  limit: 5,
  filter: { must: [{ key: "in_stock", match: { value: true } }] },
});

// Scroll (iterate over all points)
const batch = await client.scroll("products", {
  filter: { must: [{ key: "category", match: { value: "electronics" } }] },
  limit: 100,
  with_payload: true,
  with_vectors: false,
});

Named Vectors (Multi-Vector)

// Collection with multiple vector spaces
await client.createCollection("articles", {
  vectors: {
    title: { size: 384, distance: "Cosine" },    // Title embedding
    content: { size: 1536, distance: "Cosine" },  // Content embedding
  },
});

// Search by title similarity
const byTitle = await client.search("articles", {
  vector: { name: "title", vector: titleEmbedding },
  limit: 10,
});

// Search by content similarity
const byContent = await client.search("articles", {
  vector: { name: "content", vector: contentEmbedding },
  limit: 10,
});

Installation

npm install @qdrant/js-client-rest

# Server
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

Best Practices

  1. Payload filtering — Filter BEFORE vector search; Qdrant optimizes this path for fast filtered search
  2. Payload indexes — Create indexes on frequently filtered fields; PUT /collections/{name}/index
  3. Named vectors — Use multiple vectors per point for different aspects (title, content, image)
  4. Score threshold — Set score_threshold to skip low-quality results; reduces noise
  5. Quantization — Enable scalar or product quantization for 4x memory reduction; minimal quality loss
  6. Batch upsert — Send points in batches of 100-1000; parallel upload for faster indexing
  7. Recommendations — Use positive/negative examples for "more like this" without generating embeddings
  8. Qdrant Cloud — Managed hosting with free tier; or self-host with Docker for full control