Erste Schritte mit der Vektorsuche (Teil 2)
Nov 10, 2024 am 02:07 AMIn 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
- .env erstellen:
OPENAI_API_KEY=your_openai_api_key
- 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
- 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;
- Suchen Sie ein Buch mit dem Titel „Web“
- Holen Sie sich die Einbettung dieses Buches (seine mathematische Darstellung)
- Vergleichen Sie diese Einbettung mit den Einbettungen aller anderen Bücher
- 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

So implementieren Sie Ihre eigene Datenstruktur in Python
