Maison > développement back-end > Tutoriel Python > Premiers pas avec la recherche de vecteurs (partie 2)

Premiers pas avec la recherche de vecteurs (partie 2)

Linda Hamilton
Libérer: 2024-11-10 02:07:02
original
612 Les gens l'ont consulté

Getting Started with Vector Search (Part 2)

Dans la première partie, nous avons configuré PostgreSQL avec pgvector. Voyons maintenant comment fonctionne réellement la recherche vectorielle.

Contenu

  • Que sont les intégrations ?
  • Chargement des exemples de données
  • Explorer la recherche de vecteurs
  • Comprendre les opérateurs PostgreSQL
  • Prochaines étapes

Que sont les intégrations ?

Une intégration est comme un résumé intelligent du contenu en chiffres. La distance entre deux plongements indique leur niveau de similarité. Une petite distance suggère que les vecteurs sont assez similaires, et une grande distance indique qu'ils sont moins liés.

? 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
Copier après la connexion

Chargement d'exemples de données

Maintenant, remplissons notre base de données avec quelques données. Nous utiliserons :

  • API Open Library pour les données de livres
  • API OpenAI pour créer des intégrations
  • pgvector pour les stocker et les rechercher

Structure du projet

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
Copier après la connexion

Créer un script

Commençons par un script pour charger des données à partir d'API externes. Le script complet est ici.

Configuration du chargement des données

  1. Créer .env :
OPENAI_API_KEY=your_openai_api_key
Copier après la connexion
  1. Mettez à jour compose.yml pour ajouter le chargeur de données :
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
Copier après la connexion
  1. Charger les données :
docker compose up data_loader
Copier après la connexion

Vous devriez voir 10 livres de programmation avec leurs métadonnées.

Explorer la recherche de vecteurs

Connectez-vous à votre base de données :

docker exec -it pgvector-db psql -U postgres -d example_db
Copier après la connexion

Comprendre les données vectorielles

Voyons à quoi ressemblent réellement les intégrations :

-- View first 5 dimensions of an embedding
SELECT
    name,
    (embedding::text::float[])[1:5] as first_5_dimensions
FROM items
LIMIT 1;
Copier après la connexion
  • Chaque intégration a 1536 dimensions (en utilisant le modèle d'OpenAI)
  • Les valeurs varient généralement de -1 à 1
  • Ces chiffres représentent une signification sémantique

Trouver des livres similaires

Essayez une simple recherche de similarité :

-- 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;
Copier après la connexion
  1. Trouver un livre avec "Web" dans son titre
  2. Obtenez l'intégration de ce livre (sa représentation mathématique)
  3. Comparez cette intégration avec les intégrations de tous les autres livres
  4. Obtenez les 3 livres les plus similaires (plus petites distances)

Comprendre les opérateurs PostgreSQL

Décomposons les opérateurs utilisés dans les requêtes de recherche vectorielle :

Opérateur de texte JSON : ->>

Extrait la valeur texte d'un champ JSON.

Exemple :

-- If metadata = {"title": "ABC"}, it returns "ABC"
SELECT metadata->>'title' FROM items;
Copier après la connexion

Opérateur de distance vectorielle : <->

Mesure la similarité entre deux vecteurs.

  • Plus petite distance = Plus similaire
  • Plus grande distance = Moins similaire

Exemple :

-- Find similar books
SELECT name, embedding <-> query_embedding as distance
FROM items
ORDER BY distance
LIMIT 3;
Copier après la connexion

Prochaines étapes

Ensuite, nous allons :

  • Créer une application FastAPI
  • Créer des points de terminaison de recherche
  • Rendre notre recherche de vecteurs accessible via API

Restez à l'écoute pour la partie 3 : « Créer une API de recherche de vecteurs » ! ?

N'hésitez pas à laisser un commentaire ci-dessous ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal