Erste Schritte mit der Vektorsuche (Teil 2)

Linda Hamilton
Freigeben: 2024-11-10 02:07:02
Original
583 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren
  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
Nach dem Login kopieren
  1. Laden Sie die Daten:
docker compose up data_loader
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
Nach dem Login kopieren
  • 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;
Nach dem Login kopieren
  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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage