Olvasás angol nyelven

Megosztás a következőn keresztül:


Hibrid keresés az Azure Cosmos DB for NoSQL-ben (előzetes verzió)

Az Azure Cosmos DB for NoSQL mostantól támogatja a hatékony hibrid keresési képességet, amely a Vector Search és a Teljes szöveges keresés pontozása (BM25) függvényt kombinálja a Kölcsönös rangsor fúziós (RRF) függvény használatával.

Megjegyzés

A Teljes szöveg > Hibrid keresés előzetes verzióban érhető el, és jelenleg nem minden régióban érhető el.

A hibrid keresés a vektoralapú és a hagyományos kulcsszóalapú keresési módszerek erősségeit használja a relevánsabb és pontosabb keresési eredmények eléréséhez. A hibrid keresés egyszerűen elvégezhető az Azure Cosmos DB for NoSQL-ben, mivel a metaadatokat és a vektorokat is tárolhatja ugyanabban a dokumentumban.

A Hibrid keresés az Azure Cosmos DB for NoSQL-ben két különböző keresési módszert integrál:

  • Vektorkeresés: Gépi tanulási modelleket használ a lekérdezések és dokumentumok szemantikai jelentésének megértéséhez. Ez árnyaltabb és környezettudatosabb keresési eredményeket tesz lehetővé, különösen olyan összetett lekérdezések esetén hasznos, ahol a hagyományos kulcsszókeresés rövid lehet.
  • Teljes szöveges keresés (BM25): Egy jól bevált algoritmus, amely a szavak és kifejezések jelenléte és gyakorisága alapján pontozza a dokumentumokat. A BM25 különösen hatékony az egyszerű kulcsszókeresésekhez, és robusztus alapkonfigurációt biztosít a keresési relevancia szempontjából.

A vektorkeresés és a teljes szöveges keresés eredményei ezután a Kölcsönös rangsor fúzió (RRF) függvény használatával lesznek kombinálva. Az RRF egy rangösszesítési módszer, amely egyesíti a rangsorokat több keresési algoritmusból egyetlen, egységes rangsor létrehozásához. Ez biztosítja, hogy a végső keresési eredmények mindkét keresési megközelítés erősségeiből részesüljenek, és több előnnyel járnak.

  • Továbbfejlesztett relevancia: A szemantikai megértés és a kulcsszóegyeztetés kombinálásával a hibrid keresés relevánsabb eredményeket biztosít a lekérdezések széles köréhez.
  • Továbbfejlesztett pontosság: Az RRF függvény biztosítja, hogy mindkét keresési módszer közül a leginkább megfelelő eredmények legyenek rangsorolva.
  • Sokoldalúság: Alkalmas különböző használati esetekre, beleértve a retrieveal augmented generation (RAG) függvényt, hogy javítsa a saját adataira alapozott LLM által generált válaszokat.
  1. Engedélyezze a Vektorkeresést az Azure Cosmos DB for NoSQL szolgáltatásban.
  2. Engedélyezze a Full Text > Hybrid Search for NoSQL előzetes verziójú funkciót.
  3. Hozzon létre egy tárolót vektorszabályzattal, teljes szöveges szabályzattal, vektorindexkel és teljes szöveges indexel.
  4. Az adatok beszúrása szöveg- és vektortulajdonságokkal.
  5. Hibrid lekérdezések futtatása az adatokon.

Fontos

A vektorszabályzatok és a vektorindexek jelenleg nem módosíthatók a létrehozás után. A módosítások elvégzéséhez hozzon létre egy új gyűjteményt.

Mintavektor-szabályzat

{
   "vectorEmbeddings": [
       {
           "path":"/vector",
           "dataType":"float32",
           "distanceFunction":"cosine",
           "dimensions":3
       },

}

Teljes szöveges mintaszabályzat

{
    "defaultLanguage": "en-US",
    "fullTextPaths": [
        {
            "path": "/text",
            "language": "en-US"
        }
    ]
}

Minta indexelési szabályzat teljes szöveges és vektorindexekkel

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
        {
            "path": "/vector/*"
        }
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        }
    ],
    "vectorIndexes": [
        {
            "path": "/vector",
            "type": "DiskANN"
        }
    ]
}

Hibrid keresési lekérdezések

A hibrid keresési lekérdezések úgy hajthatók végre, hogy a RRF rendszerfüggvényt egy ORDER BY RANK olyan záradékban használják, amely egy függvényt és FullTextScoreegy VectorDistance . Egy paraméteres lekérdezés például a legrelevánsabb k találatok megkereséséhez a következőképpen nézne ki:

SELECT TOP @k *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, @queryVector), FullTextScore(c.content, [@searchTerm1, @searchTerm2, ...]))

Tegyük fel, hogy rendelkezik egy olyan dokumentumkal, amely vektorbeágyazással rendelkezik az egyes dokumentumokban a tulajdonságban c.vector és a c.text tulajdonságban található szöveges adatokban. A 10 legrelevánsabb dokumentum hibrid kereséssel való lekéréséhez a lekérdezés a következőképpen írható:

SELECT TOP 10 * 
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, [1,2,3]), FullTextScore(c.text, ["text", "to", "search", "goes" ,"here])