Rumah >pembangunan bahagian belakang >Tutorial Python >Mulakan dengan carian vektor di Azure Cosmos DB
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:
text-embedding-ada-002
digunakan (boleh diakses melalui portal Azure AI Foundry). Model ini menyediakan pembenaman teks.Mengkonfigurasi Pangkalan Data Vektor dalam Azure Cosmos DB untuk NoSQL:
Dayakan ciri: Ini adalah langkah sekali sahaja. Dayakan pengindeksan dan carian vektor secara eksplisit dalam Azure Cosmos DB.
Buat pangkalan data dan bekas: Cipta pangkalan data (cth., movies_db
) dan bekas (cth., movies
) dengan kunci partition /id
.
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).
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:
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):
cd python; python3 -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt; python load.py
cd typescript; npm install; npm run build; npm run load
cd java; mvn clean install; java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar load
cd dotnet; dotnet restore; dotnet run load
Mengesahkan data dalam Azure Cosmos DB:
Sahkan penyisipan data menggunakan portal Azure atau pelanjutan kod Visual Studio.
Komponen carian menggunakan fungsi untuk mencari filem yang sama berdasarkan kriteria carian (mis., "Komedi"). Prosesnya ialah:
VectorDistance
Menjana vektor embedding untuk kriteria carian.
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 (
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!