Penyimpanan Vektor di Azure Cosmos DB untuk MongoDB vCore
BERLAKU UNTUK: MongoDB vCore
Gunakan Database Vektor Terintegrasi di Azure Cosmos DB untuk MongoDB vCore untuk menghubungkan aplikasi berbasis AI Anda dengan lancar dengan data Anda yang disimpan di Azure Cosmos DB. Integrasi ini dapat mencakup aplikasi yang Anda buat dengan menggunakan penyematan Azure OpenAI. Database vektor terintegrasi asli memungkinkan Anda menyimpan, mengindeks, dan mengkueri data vektor dimensi tinggi secara efisien yang disimpan langsung di Azure Cosmos DB untuk MongoDB vCore, bersama dengan data asli tempat data vektor dibuat. Ini menghilangkan kebutuhan untuk mentransfer data Anda ke penyimpanan vektor alternatif dan dikenakan biaya tambahan.
Apa itu penyimpanan vektor?
Penyimpanan vektor atau database vektor adalah database yang dirancang untuk menyimpan dan mengelola penyematan vektor, yang merupakan representasi matematika data dalam ruang dimensi tinggi. Dalam ruang ini, setiap dimensi sesuai dengan fitur data, dan puluhan ribu dimensi mungkin digunakan untuk mewakili data canggih. Posisi vektor dalam ruang ini mewakili karakteristiknya. Kata, frasa, atau seluruh dokumen, dan gambar, audio, dan jenis data lainnya semuanya dapat di-vektorisasi.
Bagaimana cara kerja penyimpanan vektor?
Di penyimpanan vektor, algoritma pencarian vektor digunakan untuk mengindeks dan mengkueri penyematan. Beberapa algoritma pencarian vektor terkenal termasuk Hierarkis Navigable Small World (HNSW), Inverted File (IVF), DiskANN, dll. Pencarian vektor adalah metode yang membantu Anda menemukan item serupa berdasarkan karakteristik datanya daripada dengan kecocokan yang tepat pada bidang properti. Teknik ini berguna dalam aplikasi seperti mencari teks serupa, menemukan gambar terkait, membuat rekomendasi, atau bahkan mendeteksi anomali. Ini digunakan untuk mengkueri penyematan vektor (daftar angka) data yang Anda buat dengan menggunakan model pembelajaran mesin dengan menggunakan API penyematan. Contoh API penyematan adalah Azure OpenAI Embeddings atau Hugging Face di Azure. Pencarian vektor mengukur jarak antara vektor data dan vektor kueri Anda. Vektor data yang paling dekat dengan vektor kueri Anda adalah vektor yang ditemukan paling mirip secara semantik.
Dalam Database Vektor Terintegrasi di Azure Cosmos DB untuk MongoDB vCore, penyematan dapat disimpan, diindeks, dan dikueri bersama data asli. Pendekatan ini menghilangkan biaya tambahan untuk mereplikasi data dalam database vektor murni terpisah. Selain itu, arsitektur ini menjaga penyematan vektor dan data asli bersama-sama, yang lebih memfasilitasi operasi data multi-modal, dan memungkinkan konsistensi, skala, dan performa data yang lebih besar.
Membuat indeks vektor
Untuk melakukan pencarian similiaritas vektor atas properti vektor di dokumen, Anda harus terlebih dahulu membuat indeks vektor.
Membuat indeks vektor menggunakan HNSW
Anda dapat membuat indeks (Hierarkis Navigable Small World) pada tingkat kluster M40 dan yang lebih tinggi. Untuk membuat indeks HSNW, Anda perlu membuat indeks vektor dengan parameter yang "kind"
diatur untuk "vector-hnsw"
mengikuti templat di bawah ini:
{
"createIndexes": "<collection_name>",
"indexes": [
{
"name": "<index_name>",
"key": {
"<path_to_property>": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-hnsw",
"m": <integer_value>,
"efConstruction": <integer_value>,
"similarity": "<string_value>",
"dimensions": <integer_value>
}
}
]
}
Bidang | Jenis | Deskripsi |
---|---|---|
index_name |
string | Nama unik indeks. |
path_to_property |
string | Jalur ke properti yang berisi vektor. Jalur ini bisa menjadi properti tingkat atas atau jalur notasi titik ke properti . Jika jalur notasi titik digunakan, maka semua elemen nonleaf tidak dapat berupa array. Vektor harus diindeks number[] dan dikembalikan dalam hasil pencarian vektor. |
kind |
string | Jenis indeks vektor yang akan dibuat. Opsinya adalah vector-ivf dan vector-hnsw . Catatan vector-ivf tersedia di semua tingkat kluster dan vector-hnsw tersedia pada tingkat kluster M40 dan yang lebih tinggi. |
m |
Integer | Jumlah maksimum koneksi per lapisan (16 secara default, nilai minimum adalah 2 , nilai maksimum adalah 100 ). M yang lebih tinggi cocok untuk himpunan data dengan dimensi tinggi dan/atau persyaratan akurasi tinggi. |
efConstruction |
Integer | ukuran daftar kandidat dinamis untuk membuat grafik (64 secara default, nilai minimum adalah 4 , nilai maksimum adalah 1000 ). Lebih tinggi efConstruction akan menghasilkan kualitas indeks yang lebih baik dan akurasi yang lebih tinggi, tetapi juga akan meningkatkan waktu yang diperlukan untuk membangun indeks. efConstruction harus setidaknya 2 * m |
similarity |
string | Metrik kesamaan untuk digunakan dengan indeks. Opsi yang mungkin adalah COS (jarak kosinus), L2 (jarak Euclidean), dan IP (produk dalam). |
dimensions |
Integer | Jumlah dimensi untuk kesamaan vektor. Jumlah maksimum dimensi yang didukung adalah 2000 . |
Melakukan pencarian vektor dengan HNSW
Untuk melakukan pencarian vektor, gunakan $search
tahap alur agregasi kueri dengan cosmosSearch
operator.
{
"$search": {
"cosmosSearch": {
"vector": <query_vector>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
"efSearch": <integer_value>
},
}
}
}
Bidang | Jenis | Deskripsi |
---|---|---|
efSearch |
Integer | Ukuran daftar kandidat dinamis untuk pencarian (40 secara default). Nilai yang lebih tinggi memberikan pengenalan yang lebih baik dengan biaya kecepatan. |
k |
Integer | Jumlah hasil yang akan dikembalikan. harus kurang dari atau sama dengan efSearch |
Catatan
Membuat indeks HSNW dengan himpunan data besar dapat mengakibatkan sumber daya Azure Cosmos DB for MongoDB vCore Anda kehabisan memori, atau dapat membatasi performa operasi lain yang berjalan di database Anda. Jika Anda mengalami masalah tersebut, ini dapat dimitigasi dengan menskalakan sumber daya Anda ke tingkat kluster yang lebih tinggi, atau mengurangi ukuran himpunan data.
Membuat indeks vektor menggunakan IVF
Untuk membuat indeks vektor menggunakan algoritma IVF (File Terbalik), gunakan templat berikut createIndexes
dan atur "kind"
paramter ke "vector-ivf"
:
{
"createIndexes": "<collection_name>",
"indexes": [
{
"name": "<index_name>",
"key": {
"<path_to_property>": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-ivf",
"numLists": <integer_value>,
"similarity": "<string_value>",
"dimensions": <integer_value>
}
}
]
}
Bidang | Jenis | Deskripsi |
---|---|---|
index_name |
string | Nama unik indeks. |
path_to_property |
string | Jalur ke properti yang berisi vektor. Jalur ini bisa menjadi properti tingkat atas atau jalur notasi titik ke properti . Jika jalur notasi titik digunakan, maka semua elemen nonleaf tidak dapat berupa array. Vektor harus diindeks number[] dan dikembalikan dalam hasil pencarian vektor. |
kind |
string | Jenis indeks vektor yang akan dibuat. Opsinya adalah vector-ivf dan vector-hnsw . Catatan vector-ivf tersedia di semua tingkat kluster dan vector-hnsw tersedia pada tingkat kluster M40 dan yang lebih tinggi. |
numLists |
Integer | Bilangan bulat ini adalah jumlah kluster yang digunakan indeks file terbalik (IVF) untuk mengelompokkan data vektor. numLists Sebaiknya diatur ke documentCount/1000 hingga 1 juta dokumen dan untuk sqrt(documentCount) lebih dari 1 juta dokumen. numLists Menggunakan nilai 1 mirip dengan melakukan pencarian brute-force, yang memiliki performa terbatas. |
similarity |
string | Metrik kesamaan untuk digunakan dengan indeks. Opsi yang mungkin adalah COS (jarak kosinus), L2 (jarak Euclidean), dan IP (produk dalam). |
dimensions |
Integer | Jumlah dimensi untuk kesamaan vektor. Jumlah maksimum dimensi yang didukung adalah 2000 . |
Penting
Mengatur parameter numLists dengan benar penting untuk mencapai akurasi dan performa yang baik. numLists
Sebaiknya diatur ke documentCount/1000
hingga 1 juta dokumen dan untuk sqrt(documentCount)
lebih dari 1 juta dokumen.
Seiring bertambahnya jumlah item dalam database Anda, Anda harus menyetel numLists agar lebih besar untuk mencapai performa latensi yang baik untuk pencarian vektor.
Jika Anda bereksperimen dengan skenario baru atau membuat demo kecil, Anda dapat mulai dengan numLists
mengatur ke 1
untuk melakukan pencarian brute-force di semua vektor. Ini harus memberi Anda hasil yang paling akurat dari pencarian vektor, namun ketahuilah bahwa kecepatan pencarian dan latensi akan lambat. Setelah penyiapan awal, Anda harus melanjutkan dan menyetel numLists
parameter menggunakan panduan di atas.
Melakukan pencarian vektor dengan IVF
Untuk melakukan pencarian vektor, gunakan $search
tahap alur agregasi dalam kueri MongoDB. Untuk menggunakan cosmosSearch
indeks, gunakan operator baru cosmosSearch
.
{
{
"$search": {
"cosmosSearch": {
"vector": <query_vector>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
},
"returnStoredSource": True }},
{
"$project": { "<custom_name_for_similarity_score>": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
}
Untuk mengambil skor kesamaan (searchScore
) bersama dengan dokumen yang ditemukan oleh pencarian vektor, gunakan $project
operator untuk menyertakan searchScore
dan mengganti namanya seperti <custom_name_for_similarity_score>
dalam hasil. Kemudian dokumen juga diproyeksikan sebagai objek berlapis. Perhatikan bahwa skor kesamaan dihitung menggunakan metrik yang ditentukan dalam indeks vektor.
Penting
Vektor harus diindeks number[]
. Menggunakan jenis lain, seperti double[]
, mencegah dokumen diindeks. Dokumen yang tidak diindeks tidak akan dikembalikan dalam hasil pencarian vektor.
Contoh menggunakan indeks HNSW.
Contoh berikut menunjukkan kepada Anda cara mengindeks vektor, menambahkan dokumen yang memiliki properti vektor, melakukan pencarian vektor, dan mengambil konfigurasi indeks.
use test;
db.createCollection("exampleCollection");
db.runCommand({
"createIndexes": "exampleCollection",
"indexes": [
{
"name": "VectorSearchIndex",
"key": {
"contentVector": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-hnsw",
"m": 16,
"efConstruction": 64,
"similarity": "COS",
"dimensions": 3
}
}
]
});
Perintah ini membuat indeks HNSW terhadap contentVector
properti dalam dokumen yang disimpan dalam koleksi yang ditentukan, exampleCollection
. Properti cosmosSearchOptions
menentukan parameter untuk indeks vektor HNSW. Jika dokumen Anda memiliki vektor yang disimpan di properti berlapis, Anda dapat mengatur properti ini dengan menggunakan jalur notasi titik. Misalnya, Anda dapat menggunakan text.contentVector
jika contentVector
merupakan subproperti dari text
.
Menambahkan vektor ke database Anda
Untuk menambahkan vektor ke koleksi database, Anda harus terlebih dahulu membuat penyematan dengan menggunakan model Anda sendiri, Azure OpenAI Embeddings, atau API lain (seperti Hugging Face di Azure). Dalam contoh ini, dokumen baru ditambahkan melalui penyematan sampel:
db.exampleCollection.insertMany([
{name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
{name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
{name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
{name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);
Melakukan pencarian vektor
Melanjutkan dengan contoh terakhir, buat vektor lain, queryVector
. Pencarian vektor mengukur jarak antara queryVector
dan vektor di contentVector
jalur dokumen Anda. Anda dapat mengatur jumlah hasil yang dikembalikan pencarian dengan mengatur parameter k
, yang diatur ke 2
sini. Anda juga dapat mengatur efSearch
, yang merupakan bilangan bulat yang mengontrol ukuran daftar vektor kandidat. Nilai yang lebih tinggi dapat meningkatkan akurasi, namun pencarian akan lebih lambat sebagai hasilnya. Ini adalah parameter opsional dengan nilai default 40.
const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": "queryVector",
"path": "contentVector",
"k": 2,
"efSearch": 40
},
}
}
}
]);
Dalam contoh ini, pencarian vektor dilakukan dengan menggunakan queryVector
sebagai input melalui shell Mongo. Hasil pencarian adalah daftar dua item yang paling mirip dengan vektor kueri, diurutkan berdasarkan skor kesamaannya.
[
{
similarityScore: 0.9465376,
document: {
_id: ObjectId("645acb54413be5502badff94"),
name: 'Eugenia Lopez',
bio: 'Eugenia is the CEO of AdvenureWorks.',
vectorContent: [ 0.51, 0.12, 0.23 ]
}
},
{
similarityScore: 0.9006955,
document: {
_id: ObjectId("645acb54413be5502badff97"),
name: 'Rory Nguyen',
bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
vectorContent: [ 0.91, 0.76, 0.83 ]
}
}
]
Mendapatkan definisi indeks vektor
Untuk mengambil definisi indeks vektor Anda dari koleksi, gunakan listIndexes
perintah :
db.exampleCollection.getIndexes();
Dalam contoh ini, vectorIndex
dikembalikan dengan semua cosmosSearch
parameter yang digunakan untuk membuat indeks:
[
{ v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
{
v: 2,
key: { contentVector: 'cosmosSearch' },
name: 'vectorSearchIndex',
cosmosSearch: {
kind: 'vector-hnsw',
m: 40,
efConstruction: 64,
similarity: 'COS',
dimensions: 3
},
ns: 'test.exampleCollection'
}
]
Contoh menggunakan Indeks IVF
Pengindeksan File Terbalik (IVF) adalah metode yang mengatur vektor ke dalam kluster. Selama pencarian vektor, vektor kueri pertama kali dibandingkan dengan pusat kluster ini. Pencarian kemudian dilakukan dalam kluster yang pusatnya paling dekat dengan vektor kueri.
Parameter numList
s menentukan jumlah kluster yang akan dibuat. Satu kluster menyiratkan bahwa pencarian dilakukan terhadap semua vektor dalam database, mirip dengan pencarian brute-force atau kNN. Pengaturan ini memberikan akurasi tertinggi tetapi juga latensi tertinggi.
Meningkatkan nilai menghasilkan numLists
lebih banyak kluster, masing-masing berisi lebih sedikit vektor. Misalnya, jika numLists=2
, setiap kluster berisi lebih banyak vektor daripada jika numLists=3
, dan sebagainya. Lebih sedikit vektor per kluster mempercepat pencarian (latensi yang lebih rendah, kueri yang lebih tinggi per detik). Namun, ini meningkatkan kemungkinan kehilangan vektor yang paling mirip dalam database Anda ke vektor kueri. Ini karena sifat pengklusteran yang tidak sempurna, di mana pencarian mungkin berfokus pada satu kluster sementara vektor "terdekat" aktual berada di kluster yang berbeda.
Parameter nProbes
mengontrol jumlah kluster yang akan dicari. Secara default, diatur ke 1, yang berarti hanya mencari kluster dengan pusat yang paling dekat dengan vektor kueri. Meningkatkan nilai ini memungkinkan pencarian untuk mencakup lebih banyak kluster, meningkatkan akurasi tetapi juga meningkatkan latensi (sehingga mengurangi kueri per detik) karena lebih banyak kluster dan vektor sedang dicari.
Contoh berikut menunjukkan kepada Anda cara mengindeks vektor, menambahkan dokumen yang memiliki properti vektor, melakukan pencarian vektor, dan mengambil konfigurasi indeks.
Membuat indeks vektor
use test;
db.createCollection("exampleCollection");
db.runCommand({
createIndexes: 'exampleCollection',
indexes: [
{
name: 'vectorSearchIndex',
key: {
"vectorContent": "cosmosSearch"
},
cosmosSearchOptions: {
kind: 'vector-ivf',
numLists: 3,
similarity: 'COS',
dimensions: 3
}
}
]
});
Perintah ini membuat vector-ivf
indeks terhadap vectorContent
properti dalam dokumen yang disimpan dalam koleksi yang ditentukan, exampleCollection
. Properti cosmosSearchOptions
menentukan parameter untuk indeks vektor IVF. Jika dokumen Anda memiliki vektor yang disimpan di properti berlapis, Anda dapat mengatur properti ini dengan menggunakan jalur notasi titik. Misalnya, Anda dapat menggunakan text.vectorContent
jika vectorContent
merupakan subproperti dari text
.
Menambahkan vektor ke database Anda
Untuk menambahkan vektor ke koleksi database, Anda harus terlebih dahulu membuat penyematan dengan menggunakan model Anda sendiri, Azure OpenAI Embeddings, atau API lain (seperti Hugging Face di Azure). Dalam contoh ini, dokumen baru ditambahkan melalui penyematan sampel:
db.exampleCollection.insertMany([
{name: "Eugenia Lopez", bio: "Eugenia is the CEO of AdvenureWorks.", vectorContent: [0.51, 0.12, 0.23]},
{name: "Cameron Baker", bio: "Cameron Baker CFO of AdvenureWorks.", vectorContent: [0.55, 0.89, 0.44]},
{name: "Jessie Irwin", bio: "Jessie Irwin is the former CEO of AdventureWorks and now the director of the Our Planet initiative.", vectorContent: [0.13, 0.92, 0.85]},
{name: "Rory Nguyen", bio: "Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.", vectorContent: [0.91, 0.76, 0.83]},
]);
Melakukan pencarian vektor
Untuk melakukan pencarian vektor, gunakan $search
tahap alur agregasi dalam kueri MongoDB. Untuk menggunakan cosmosSearch
indeks, gunakan operator baru cosmosSearch
.
{
{
"$search": {
"cosmosSearch": {
"vector": <vector_to_search>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
},
"returnStoredSource": True }},
{
"$project": { "<custom_name_for_similarity_score>": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
}
Untuk mengambil skor kesamaan (searchScore
) bersama dengan dokumen yang ditemukan oleh pencarian vektor, gunakan $project
operator untuk menyertakan searchScore
dan mengganti namanya seperti <custom_name_for_similarity_score>
dalam hasil. Kemudian dokumen juga diproyeksikan sebagai objek berlapis. Perhatikan bahwa skor kesamaan dihitung menggunakan metrik yang ditentukan dalam indeks vektor.
Vektor kueri dan jarak vektor (alias skor kesamaan) menggunakan $search"
Melanjutkan dengan contoh terakhir, buat vektor lain, queryVector
. Pencarian vektor mengukur jarak antara queryVector
dan vektor di vectorContent
jalur dokumen Anda. Anda dapat mengatur jumlah hasil yang dikembalikan pencarian dengan mengatur parameter k
, yang diatur ke 2
sini. Anda juga dapat mengatur nProbes
, yang merupakan bilangan bulat yang mengontrol jumlah kluster terdekat yang diperiksa di setiap pencarian. Nilai yang lebih tinggi dapat meningkatkan akurasi, namun pencarian akan lebih lambat sebagai hasilnya. Ini adalah parameter opsional dengan nilai default 1 dan tidak boleh lebih besar dari numLists
nilai yang ditentukan dalam indeks vektor.
const queryVector = [0.52, 0.28, 0.12];
db.exampleCollection.aggregate([
{
$search: {
"cosmosSearch": {
"vector": queryVector,
"path": "vectorContent",
"k": 2
},
"returnStoredSource": true }},
{
"$project": { "similarityScore": {
"$meta": "searchScore" },
"document" : "$$ROOT"
}
}
]);
Dalam contoh ini, pencarian vektor dilakukan dengan menggunakan queryVector
sebagai input melalui shell Mongo. Hasil pencarian adalah daftar dua item yang paling mirip dengan vektor kueri, diurutkan berdasarkan skor kesamaannya.
[
{
similarityScore: 0.9465376,
document: {
_id: ObjectId("645acb54413be5502badff94"),
name: 'Eugenia Lopez',
bio: 'Eugenia is the CEO of AdvenureWorks.',
vectorContent: [ 0.51, 0.12, 0.23 ]
}
},
{
similarityScore: 0.9006955,
document: {
_id: ObjectId("645acb54413be5502badff97"),
name: 'Rory Nguyen',
bio: 'Rory Nguyen is the founder of AdventureWorks and the president of the Our Planet initiative.',
vectorContent: [ 0.91, 0.76, 0.83 ]
}
}
]
Mendapatkan definisi indeks vektor
Untuk mengambil definisi indeks vektor Anda dari koleksi, gunakan listIndexes
perintah :
db.exampleCollection.getIndexes();
Dalam contoh ini, vectorIndex
dikembalikan dengan semua cosmosSearch
parameter yang digunakan untuk membuat indeks:
[
{ v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.exampleCollection' },
{
v: 2,
key: { vectorContent: 'cosmosSearch' },
name: 'vectorSearchIndex',
cosmosSearch: {
kind: 'vector-ivf',
numLists: 3,
similarity: 'COS',
dimensions: 3
},
ns: 'test.exampleCollection'
}
]
Pencarian vektor yang difilter (pratinjau)
Anda sekarang dapat menjalankan pencarian vektor dengan filter kueri yang didukung seperti $lt
, , $lte
, $eq
, $gte
$neq
, $gt
, $in
, $nin
, dan $regex
. Aktifkan fitur "pemfilteran pencarian vektor" di tab "Fitur Pratinjau" dari Langganan Azure Anda. Pelajari selengkapnya tentang fitur pratinjau di sini.
Pertama, Anda harus menentukan indeks untuk filter Anda selain indeks vektor. Misalnya, Anda dapat menentukan indeks filter pada properti
db.runCommand({
"createIndexes": "<collection_name",
"indexes": [ {
"key": {
"<property_to_filter>": 1
},
"name": "<name_of_filter_index>"
}
]
});
Selanjutnya, Anda dapat menambahkan istilah ke pencarian vektor seperti yang "filter"
ditunjukkan di bawah ini. Dalam contoh ini filter mencari dokumen di mana "title"
properti tidak ada dalam daftar ["not in this text", "or this text"]
.
db.exampleCollection.aggregate([
{
'$search': {
"cosmosSearch": {
"vector": "<query_vector>",
"path": <path_to_vector>,
"k": num_results,
"filter": {<property_to_filter>: {"$nin": ["not in this text", "or this text"]}}
},
"returnStoredSource": True }},
{'$project': { 'similarityScore': { '$meta': 'searchScore' }, 'document' : '$$ROOT' }
}
]);
Penting
Saat dalam pratinjau, pencarian vektor yang difilter mungkin mengharuskan Anda untuk menyesuaikan parameter indeks vektor Anda untuk mencapai akurasi yang lebih tinggi. Misalnya, meningkatkan m
, , atau efSearch
saat menggunakan HNSW, atau , atau nProbes
numLists
saat menggunakan IVF, dapat menyebabkan hasil efConstruction
yang lebih baik. Anda harus menguji konfigurasi sebelum digunakan untuk memastikan bahwa hasilnya memuaskan.
Menggunakan alat Orkestrasi LLM
Gunakan sebagai database vektor dengan Kernel Semantik
Gunakan Semantic Kernel untuk mengatur pengambilan informasi Anda dari Azure Cosmos DB untuk MongoDB vCore dan LLM Anda. Pelajari selengkapnya di sini.
Gunakan sebagai database vektor dengan LangChain
Gunakan LangChain untuk mengatur pengambilan informasi Anda dari Azure Cosmos DB untuk MongoDB vCore dan LLM Anda. Pelajari selengkapnya di sini.
Gunakan sebagai cache semantik dengan LangChain
Gunakan LangChain dan Azure Cosmos DB untuk MongoDB (vCore) untuk mengatur Penembolokan Semantik, menggunakan respon LLM yang sebelumnya di-recocrd yang dapat menghemat biaya LLM API Anda dan mengurangi latensi untuk respons. Pelajari selengkapnya di sini
Fitur dan batasan
- Metrik jarak yang didukung: L2 (Euclidean), produk dalam, dan kosinus.
- Metode pengindeksan yang didukung: IVFFLAT (GA) dan HSNW (pratinjau)
- Vektor pengindeksan hingga ukuran 2.000 dimensi.
- Pengindeksan hanya berlaku untuk satu vektor per jalur.
- Hanya satu indeks yang dapat dibuat per jalur vektor.
Ringkasan
Panduan ini menunjukkan cara membuat indeks vektor, menambahkan dokumen yang memiliki data vektor, melakukan pencarian kesamaan, dan mengambil definisi indeks. Dengan menggunakan database vektor terintegrasi kami, Anda dapat menyimpan, mengindeks, dan mengkueri data vektor dimensi tinggi secara efisien langsung di Azure Cosmos DB untuk MongoDB vCore. Ini memungkinkan Anda untuk membuka potensi penuh data Anda melalui penyematan vektor, dan memberdayakan Anda untuk membangun aplikasi yang lebih akurat, efisien, dan kuat.
Konten terkait
- Solusi referensi ritel .NET RAG Pattern
- Tutorial .NET - resep chatbot
- Pola C# RAG - Mengintegrasikan Open AI Services dengan Cosmos
- Pola Python RAG - Chatbot produk Azure
- Tutorial notebook Python - Integrasi database vektor melalui LangChain
- Tutorial notebook Python - Integrasi PENEMBOLOKAN LLM melalui LangChain
- Python - Integrasi LlamaIndex
- Python - Integrasi memori Kernel Semantik