ホームページ > バックエンド開発 > Python チュートリアル > ベクトル検索入門 (パート 2)

ベクトル検索入門 (パート 2)

Linda Hamilton
リリース: 2024-11-10 02:07:02
オリジナル
650 人が閲覧しました

Getting Started with Vector Search (Part 2)

パート 1 では、pgvector を使用して PostgreSQL をセットアップしました。ここで、ベクトル検索が実際にどのように機能するかを見てみましょう。

コンテンツ

  • 埋め込みとは何ですか?
  • サンプルデータのロード
  • ベクトル検索の探索
  • PostgreSQL オペレーターを理解する
  • 次のステップ

埋め込みとは何ですか?

埋め込みは、コンテンツを数値でスマートにまとめたものに似ています。 2 つの埋め込み間の距離は、それらの類似性のレベルを示します。距離が小さい場合はベクトルが非常に類似していることを示し、距離が大きい場合はベクトルの関連性が低いことを示します。

? Book A: Web Development  (Distance: 0.2) ⬅️ Very Similar!
? Book B: JavaScript 101   (Distance: 0.3) ⬅️ Similar!
? Book C: Cooking Recipes  (Distance: 0.9) ❌ Not Similar
ログイン後にコピー

サンプルデータのロード

それでは、データベースにデータを入力してみましょう。以下を使用します:

  • 書籍データ用のオープンライブラリ API
  • 埋め込みを作成するための OpenAI API
  • pgvector を使用して保存および検索

プロジェクトの構造

pgvector-setup/             # From Part 1
  ├── compose.yml
  ├── postgres/
  │   └── schema.sql
  ├── .env                  # New: for API keys
  └── scripts/              # New: for data loading
      ├── requirements.txt
      ├── Dockerfile
      └── load_data.py
ログイン後にコピー

スクリプトを作成する

外部 API からデータをロードするスクリプトから始めましょう。完全なスクリプトはここにあります。

データロードの設定

  1. .env を作成します:
OPENAI_API_KEY=your_openai_api_key
ログイン後にコピー
  1. compose.yml を更新してデータ ローダーを追加します。
services:
  # ... existing db service from Part 1

  data_loader:
    build:
      context: ./scripts
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/example_db
      - OPENAI_API_KEY=${OPENAI_API_KEY}
    depends_on:
      - db
ログイン後にコピー
  1. データをロードします:
docker compose up data_loader
ログイン後にコピー

10 冊のプログラミング書籍とそのメタデータが表示されるはずです。

ベクトル検索の探索

データベースに接続します:

docker exec -it pgvector-db psql -U postgres -d example_db
ログイン後にコピー

ベクトルデータを理解する

埋め込みが実際にどのようなものかを見てみましょう:

-- View first 5 dimensions of an embedding
SELECT
    name,
    (embedding::text::float[])[1:5] as first_5_dimensions
FROM items
LIMIT 1;
ログイン後にコピー
  • 各埋め込みには 1536 次元があります (OpenAI のモデルを使用)
  • 通常、値の範囲は -1 から 1 です
  • これらの数字は意味上の意味を表します

類似の書籍を探す

簡単な類似性検索を試してください:

-- Find 3 books similar to any book about Web
SELECT name, metadata
FROM items
ORDER BY embedding <-> (
    SELECT embedding
    FROM items
    WHERE metadata->>'title' LIKE '%Web%'
    LIMIT 1
)
LIMIT 3;
ログイン後にコピー
  1. タイトルに「Web」が含まれる書籍を検索
  2. その本の埋め込み (数学的表現) を取得します
  3. この埋め込みを他のすべての書籍の埋め込みと比較します
  4. 最も類似した (距離が最小の) 3 冊の本を入手します

PostgreSQL 演算子を理解する

ベクトル検索クエリで使用される演算子を詳しく見てみましょう:

JSON テキスト演算子: ->>

JSON フィールドからテキスト値を抽出します。

例:

-- If metadata = {"title": "ABC"}, it returns "ABC"
SELECT metadata->>'title' FROM items;
ログイン後にコピー

ベクトル距離演算子: <->

2 つのベクトル間の類似性を測定します。

  • 距離が小さいほど類似します
  • 距離が大きいほど類似度が低くなります

例:

-- Find similar books
SELECT name, embedding <-> query_embedding as distance
FROM items
ORDER BY distance
LIMIT 3;
ログイン後にコピー

次のステップ

次に行うことは次のとおりです。

  • FastAPI アプリケーションを構築する
  • 検索エンドポイントを作成する
  • API 経由でベクター検索にアクセスできるようにします

パート 3:「Vector Search API の構築」もお楽しみに! ?

お気軽に以下にコメントを書き込んでください。 ?

以上がベクトル検索入門 (パート 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート