Rumah >pembangunan bahagian belakang >Tutorial Python >Mulakan dengan carian vektor di Azure Cosmos DB

Mulakan dengan carian vektor di Azure Cosmos DB

Susan Sarandon
Susan Sarandonasal
2025-01-26 20:15:09331semak imbas

Tutorial ini menunjukkan cara untuk melaksanakan carian vektor dengan cepat dalam Azure Cosmos DB untuk NoSQL menggunakan set data filem ringkas. Aplikasi ini tersedia dalam Python, TypeScript, .NET dan Java, memberikan arahan langkah demi langkah untuk persediaan, pemuatan data dan pertanyaan carian persamaan.

Pangkalan data vektor cemerlang dalam menyimpan dan mengurus pembenaman vektor—perwakilan matematik berdimensi tinggi bagi data. Setiap dimensi mencerminkan ciri data, yang berpotensi berjumlah puluhan ribu. Lokasi vektor dalam ruang ini menandakan ciri-cirinya. Teknik ini mengvektorkan pelbagai jenis data, termasuk perkataan, frasa, dokumen, imej dan audio, mendayakan aplikasi seperti carian persamaan, carian berbilang mod, enjin pengesyoran dan model bahasa besar (LLM).

Prasyarat:

  • Langganan Azure (atau akaun Azure percuma, atau peringkat percuma Azure Cosmos DB untuk NoSQL).
  • A Azure Cosmos DB untuk akaun NoSQL.
  • Sumber Perkhidmatan Azure OpenAI dengan model pembenaman text-embedding-ada-002 digunakan (boleh diakses melalui portal Azure AI Foundry). Model ini menyediakan pembenaman teks.
  • Persekitaran bahasa pengaturcaraan yang diperlukan (Maven for Java).

Mengkonfigurasi Pangkalan Data Vektor dalam Azure Cosmos DB untuk NoSQL:

  1. Dayakan ciri: Ini adalah langkah sekali sahaja. Dayakan pengindeksan dan carian vektor secara eksplisit dalam Azure Cosmos DB.

    Get started with Vector Search in Azure Cosmos DB

  2. Buat pangkalan data dan bekas: Cipta pangkalan data (cth., movies_db) dan bekas (cth., movies) dengan kunci partition /id.

  3. Buat dasar: Konfigurasikan dasar pembenaman vektor dan dasar pengindeksan untuk bekas. Untuk contoh ini, gunakan tetapan yang ditunjukkan di bawah (konfigurasi manual melalui portal Azure digunakan di sini, walaupun kaedah pengaturcaraan juga tersedia).

    Get started with Vector Search in Azure Cosmos DB

    Jenis Indeks Nota: Contoh menggunakan jenis indeks diskANN dengan dimensi 1536, sepadan dengan model text-embedding-ada-002. Walaupun boleh disesuaikan, menukar jenis indeks memerlukan melaraskan model pembenaman supaya sepadan dengan dimensi baharu.

Memuatkan Data ke dalam Azure Cosmos DB:

Sampel movies.json fail menyediakan data filem. Prosesnya melibatkan:

  1. Membaca maklumat filem dari fail JSON.
  2. Menjana embeddings vektor untuk penerangan filem menggunakan perkhidmatan Azure OpenAI.
  3. Memasukkan data lengkap (tajuk, keterangan, dan embeddings) ke dalam bekas Azure Cosmos DB.

Tetapkan pembolehubah persekitaran berikut sebelum meneruskan:

<code class="language-bash">export COSMOS_DB_CONNECTION_STRING=""
export DATABASE_NAME=""
export CONTAINER_NAME=""
export AZURE_OPENAI_ENDPOINT=""
export AZURE_OPENAI_KEY=""
export AZURE_OPENAI_VERSION="2024-10-21"
export EMBEDDINGS_MODEL="text-embedding-ada-002"</code>

klon repositori:

<code class="language-bash">git clone https://github.com/abhirockzz/cosmosdb-vector-search-python-typescript-java-dotnet
cd cosmosdb-vector-search-python-typescript-java-dotnet</code>

Arahan khusus bahasa untuk pemuatan data disediakan di bawah. Setiap kaedah menggunakan pembolehubah persekitaran yang ditakrifkan di atas. Pelaksanaan yang berjaya akan mengeluarkan mesej yang menunjukkan penyisipan data ke dalam kosmos db.

Arahan pemuatan data (disingkat):

  • python: cd python; python3 -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt; python load.py
  • typescript: cd typescript; npm install; npm run build; npm run load
  • java: cd java; mvn clean install; java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar load
  • .net: cd dotnet; dotnet restore; dotnet run load

Mengesahkan data dalam Azure Cosmos DB:

Sahkan penyisipan data menggunakan portal Azure atau pelanjutan kod Visual Studio.

Get started with Vector Search in Azure Cosmos DB

carian vektor/kesamaan:

Komponen carian menggunakan fungsi untuk mencari filem yang sama berdasarkan kriteria carian (mis., "Komedi"). Prosesnya ialah:

VectorDistance Menjana vektor embedding untuk kriteria carian.

    Gunakan
  1. untuk membandingkannya dengan embeddings sedia ada.
  2. VectorDistance pertanyaan:

arahan khusus bahasa (dengan asumsi pembolehubah persekitaran ditetapkan dan data dimuatkan):

<code class="language-sql">SELECT TOP @num_results c.id, c.description, VectorDistance(c.embeddings, @embedding) AS similarityScore FROM c ORDER BY VectorDistance(c.embeddings, @embedding)</code>

Arahan carian (disingkat):

python:
  • python search.py "inspiring" 3 typescript:
  • npm run search "inspiring" 3 java:
  • java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar search "inspiring" 3 .net:
  • dotnet run search "inspiring" 3 Nota Penutup:

Eksperimen dengan jenis indeks vektor yang berlainan (, ), metrik jarak (cosine, euclidean, produk dot), dan model embedding (,

). Azure Cosmos DB untuk MongoDB VCore juga menyokong carian vektor.

Atas ialah kandungan terperinci Mulakan dengan carian vektor di Azure Cosmos DB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Python Caching nilai boleh ubahArtikel seterusnya:Python Caching nilai boleh ubah