Bagikan melalui


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]},
]);

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 numLists 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.

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 numListssaat menggunakan IVF, dapat menyebabkan hasil efConstructionyang 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.

https://github.com/microsoft/semantic-kernel/tree/main/python/semantic_kernel/connectors/memory/azure_cosmosdb

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.

Langkah selanjutnya