Heim  >  Artikel  >  Backend-Entwicklung  >  Erste Schritte mit der Vektorsuche (Teil 2)

Erste Schritte mit der Vektorsuche (Teil 2)

Linda Hamilton
Linda HamiltonOriginal
2024-11-10 02:07:02585Durchsuche

Getting Started with Vector Search (Part 2)

In Teil 1 richten wir PostgreSQL mit pgvector ein. Sehen wir uns nun an, wie die Vektorsuche tatsächlich funktioniert.

Inhalt

  • Was sind Einbettungen?
  • Beispieldaten laden
  • Erkunden Sie die Vektorsuche
  • PostgreSQL-Operatoren verstehen
  • Nächste Schritte

Was sind Einbettungen?

Eine Einbettung ist wie eine intelligente Zusammenfassung von Inhalten in Zahlen. Der Abstand zwischen zwei Einbettungen gibt den Grad ihrer Ähnlichkeit an. Ein kleiner Abstand deutet darauf hin, dass die Vektoren ziemlich ähnlich sind, und ein großer Abstand deutet darauf hin, dass sie weniger verwandt sind.

? 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

Beispieldaten laden

Jetzt füllen wir unsere Datenbank mit einigen Daten. Wir verwenden:

  • Öffnen Sie die Bibliotheks-API für Buchdaten
  • OpenAI-API zum Erstellen von Einbettungen
  • pgvector zum Speichern und Durchsuchen

Projektstruktur

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

Erstellen Sie ein Skript

Beginnen wir mit einem Skript zum Laden von Daten von externen APIs. Das vollständige Skript finden Sie hier.

Einrichten des Datenladens

  1. .env erstellen:
OPENAI_API_KEY=your_openai_api_key
  1. Aktualisieren Sie compose.yml, um den Datenlader hinzuzufügen:
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. Laden Sie die Daten:
docker compose up data_loader

Sie sollten 10 Programmierbücher mit ihren Metadaten sehen.

Entdecken Sie die Vektorsuche

Verbinden Sie sich mit Ihrer Datenbank:

docker exec -it pgvector-db psql -U postgres -d example_db

Vektordaten verstehen

Sehen wir uns an, wie Einbettungen tatsächlich aussehen:

-- View first 5 dimensions of an embedding
SELECT
    name,
    (embedding::text::float[])[1:5] as first_5_dimensions
FROM items
LIMIT 1;
  • Jede Einbettung hat 1536 Dimensionen (unter Verwendung des OpenAI-Modells)
  • Werte liegen typischerweise zwischen -1 und 1
  • Diese Zahlen repräsentieren die semantische Bedeutung

Ähnliche Bücher finden

Versuchen Sie es mit einer einfachen Ähnlichkeitssuche:

-- 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. Suchen Sie ein Buch mit dem Titel „Web“
  2. Holen Sie sich die Einbettung dieses Buches (seine mathematische Darstellung)
  3. Vergleichen Sie diese Einbettung mit den Einbettungen aller anderen Bücher
  4. Ermitteln Sie die 3 ähnlichsten Bücher (kleinste Abstände)

PostgreSQL-Operatoren verstehen

Lassen Sie uns die in Vektorsuchabfragen verwendeten Operatoren aufschlüsseln:

JSON-Textoperator: ->>

Extrahiert Textwerte aus einem JSON-Feld.

Beispiel:

-- If metadata = {"title": "ABC"}, it returns "ABC"
SELECT metadata->>'title' FROM items;

Vektorentfernungsoperator: <->

Misst die Ähnlichkeit zwischen zwei Vektoren.

  • Kleinerer Abstand = Ähnlicher
  • Größerer Abstand = Weniger ähnlich

Beispiel:

-- Find similar books
SELECT name, embedding <-> query_embedding as distance
FROM items
ORDER BY distance
LIMIT 3;

Nächste Schritte

Als nächstes werden wir:

  • Erstellen Sie eine FastAPI-Anwendung
  • Suchendpunkte erstellen
  • Machen Sie unsere Vektorsuche über die API zugänglich

Bleiben Sie gespannt auf Teil 3: „Aufbau einer Vektorsuch-API“! ?

Schreiben Sie gerne unten einen Kommentar! ?

Das obige ist der detaillierte Inhalt vonErste Schritte mit der Vektorsuche (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn