Dalam Bahagian 1, kami menyediakan PostgreSQL dengan pgvector. Sekarang, mari kita lihat cara carian vektor sebenarnya berfungsi.
Pembenaman adalah seperti ringkasan pintar kandungan dalam nombor. Jarak antara dua benam menunjukkan tahap persamaannya. Jarak yang kecil menunjukkan bahawa vektor adalah agak serupa, dan jarak yang besar menunjukkan bahawa ia kurang berkaitan.
? 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
Sekarang, mari isi pangkalan data kami dengan beberapa data. Kami akan menggunakan:
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
Mari kita mulakan dengan skrip untuk memuatkan data daripada API luaran. Skrip penuh ada di sini.
OPENAI_API_KEY=your_openai_api_key
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
docker compose up data_loader
Anda sepatutnya melihat 10 buku pengaturcaraan dengan metadatanya.
Sambung ke pangkalan data anda:
docker exec -it pgvector-db psql -U postgres -d example_db
Mari kita lihat rupa benam sebenarnya:
-- View first 5 dimensions of an embedding SELECT name, (embedding::text::float[])[1:5] as first_5_dimensions FROM items LIMIT 1;
Cuba carian persamaan mudah:
-- 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;
Mari kita pecahkan pengendali yang digunakan dalam pertanyaan carian vektor:
Mengekstrak nilai teks daripada medan JSON.
Contoh:
-- If metadata = {"title": "ABC"}, it returns "ABC" SELECT metadata->>'title' FROM items;
Mengukur persamaan antara dua vektor.
Contoh:
-- Find similar books SELECT name, embedding <-> query_embedding as distance FROM items ORDER BY distance LIMIT 3;
Seterusnya, kami akan:
Nantikan Bahagian 3: "Membina API Carian Vektor"! ?
Sila tinggalkan komen di bawah! ?
Atas ialah kandungan terperinci Bermula dengan Carian Vektor (Bahagian 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!