Heim Backend-Entwicklung Python-Tutorial Erste Schritte mit der Vektorsuche (Teil 2)

Erste Schritte mit der Vektorsuche (Teil 2)

Nov 10, 2024 am 02:07 AM

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 &lt;-&gt; 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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

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

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Bildfilterung in Python

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

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

Wie man mit PDF -Dokumenten mit Python arbeitet Wie man mit PDF -Dokumenten mit Python arbeitet Mar 02, 2025 am 09:54 AM

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Mar 02, 2025 am 10:10 AM

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

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

Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Mar 08, 2025 am 09:39 AM

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

So implementieren Sie Ihre eigene Datenstruktur in Python

See all articles