首頁 >後端開發 >Python教學 >Azure Cosmos DB 中的向量搜尋入門

Azure Cosmos DB 中的向量搜尋入門

Susan Sarandon
Susan Sarandon原創
2025-01-26 20:15:09257瀏覽

>本教程演示瞭如何使用簡單的電影數據集快速在Azure Cosmos DB中快速實現矢量搜索。 該應用程序可在Python,typeScript,.Net和Java中找到,為設置,數據加載和相似性搜索查詢提供逐步說明。

>向量數據庫在存儲和管理向量嵌入 - 數據的高維數學表示方面表現出色。每個維度都反映了一個數據功能,可能在數万個中進行編號。向量在此空間中的位置表示其特徵。 該技術將各種數據類型進行了矢量,包括單詞,短語,文檔,圖像和音頻,啟用了相似性搜索,多模式搜索,推薦引擎和大型語言模型(LLMS)等應用程序。

>

>先決條件:

    azure訂閱(或免費的Azure帳戶,或NoSQL的Azure Cosmos DB的免費層)。
  • NOSQL帳戶
  • >具有部署的
  • 嵌入模型的Azure OpenAI服務資源(可通過Azure AI Foundry Portal訪問)。 該模型提供了文本嵌入。
  • text-embedding-ada-002必要的編程語言環境(Java的Maven)。
  • >
  • >在nosql中配置Azure cosmos db中的向量數據庫:

    啟用功能:這是一次性步驟。明確啟用Azure Cosmos DB中的向量索引和搜索
  1. Get started with Vector Search in Azure Cosmos DB>創建數據庫和容器:

    >創建一個數據庫(例如,
  2. )和一個具有
  3. >的分區鍵的容器(例如,

    )。 >。 movies_db movies/id創建策略:

    >配置矢量嵌入策略和容器的索引策略。 在此示例中,使用下面顯示的設置(此處使用Azure Portal的手動配置,儘管也可以使用程序化方法)。
  4. > 索引類型注意:該示例使用

    索引類型,尺寸為1536,匹配模型。 在適應性的同時,更改索引類型需要調整嵌入模型以匹配新的維度。

    Get started with Vector Search in Azure Cosmos DB

    將數據加載到Azure Cosmos DB:> diskANN示例text-embedding-ada-002文件提供電影數據。該過程涉及:

    1. >從JSON文件讀取電影信息。
    2. >使用Azure OpenAi服務生成電影描述的向量嵌入。
    3. >將完整的數據(標題,描述和嵌入)插入Azure Cosmos DB容器中。
    在繼續之前設置以下環境變量:

    <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>
    克隆存儲庫:

    下面提供了用於數據加載的語言特定說明。 每種方法都使用上面定義的環境變量。 成功的執行將輸出表示數據插入Cosmos db的消息。
    <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>
    >

    數據加載指令(縮寫):

    >

      > 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

    >在Azure Cosmos DB中驗證數據 使用Azure門戶或Visual Studio Code擴展名確認數據插入。 >

    Get started with Vector Search in Azure Cosmos DB向量/相似性搜索:

    >搜索組件使用函數根據搜索標準(例如“喜劇”)查找類似的電影。該過程為:

    生成搜索標準的向量嵌入。 > VectorDistance使用

    將其與現有嵌入式進行比較。
      >
    1. 查詢:
    2. VectorDistance
    3. 特定語言的說明(假設設置了環境變量並加載數據):>

    搜索指令(縮寫):

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

    > python:

    • > typescript: python search.py "inspiring" 3
    • > java:npm run search "inspiring" 3
    • .net:java -jar target/cosmosdb-java-vector-search-1.0-SNAPSHOT.jar search "inspiring" 3
    • >關閉註釋:dotnet run search "inspiring" 3
    實驗不同的矢量索引類型(

    ),距離指標(餘弦,歐幾里得,點乘積)和嵌入模型()。 MongoDB Vcor​​e的Azure Cosmos DB還支持向量搜索。

以上是Azure Cosmos DB 中的向量搜尋入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn