or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
tags:
Wingene
Microsoft Azure Cosmos DB for MongoDB (vCore) 使用向量搜索
介紹
Microsoft Azure Cosmos DB for MongoDB 是 Azure Cosmos DB 的一種 API,它可以讓使用者在 Cosmos DB 中運行 MongoDB 應用程式,而無需修改代碼。這讓開發者可以利用 Cosmos DB 的全球分佈、多模型和極限擴展的特性,同時還可以使用熟悉的 MongoDB 工具和 SDK。
以下是 Azure Cosmos DB for MongoDB 的一些主要特性:
全球分佈:
Azure Cosmos DB 讓你可以在世界任何地方進行數據分佈,並且可以隨時在地理位置之間進行數據遷移。
多模型和多 API:
除了 MongoDB API,Cosmos DB 還支持 SQL API,Gremlin API(用於圖形資料庫)和 Azure Table API。你可以在同一個資料庫中混合和匹配不同的模型和 API。
自動化的數據分區:
Azure Cosmos DB 自動將你的數據進行分區,以便你可以在高效率和高性能的條件下進行擴展。
無休止擴展:
Cosmos DB 讓你可以無休止地擴展存儲和吞吐量。
實時分析:
Azure Cosmos DB 支持實時分析,讓你可以對數據進行實時查詢和視覺化。
當你選擇 vCore 模式時,你可以獲得一種基於伺服器的配置,這將提供更多的彈性和控制能力。在 vCore 模式下,你可以選擇特定數量的虛擬核心、記憶體大小、存儲空間,並可選擇是否開啟 Geo-redundancy 或多區域寫入。此模式更適合大規模和生產級別的應用程式,需要更多的控制和彈性。
建立資料庫
首先,我們必須在 Azure 上啟動 Cosmos 的伺服器。要注意的是,我們所需要的向量搜尋(vector search)只能在 vCore 的版本中運作,這是先覽版本(preview)!
所以我們要建立的服務,就是 Azure Cosmos DB for MongoDB (vCore)。

在全部可以配置的方案中我都選了最低配的版本,然而預估的花費仍然是 $175 USD。
安裝 MongoDB shell
接著為了能按照官方網站的教學去建立向量搜尋的搜尋方式,我們需要直接透過 MongoDB Shell。我本來希望所有的後端都能夠用 python 完成的,因為這樣比較容易串接 —— 但是 pymongo 現在還有許多的功能尚未與 MongoDB 保持一致。
這是我參考的安裝教學 (主要是 Ubuntu 的)。
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/
0. 版本確認
MongoDB 的版本是比較需要仔細比對清楚的,例如我所使用的 Ubuntu 22.04 是在 MongoDB 6.0 版本才被支援的。所以以下的安裝是基於 Ubuntu 22.04 + MongoDB 6.0。
1. 將公鑰匯入套件管理系統中
如果系統中沒有
gnupg
,可以使用以下指令安裝(The gnupg package in Ubuntu is for GNU Privacy Guard (GnuPG), a free implementation of the OpenPGP standard as defined by RFC4880.):接著匯入 MongoDB 的公鑰 GPG Key:
2. 建立 MongoDB list file
接著重新讀取本地套件資料庫。
如此一來就可以正式安裝 MongoDB 套件了。
(Optional)為了防止自動更新意外更新到 MongoDB,可以固定在當前安裝版本上。
連線 Azure Cosmos DB 資料庫
1. 設定「網路」設定中的本地端 IP
首先,先從左側欄位找到『Network』選項,並將本地端的 IP 添加進在允許連線的 IP 列表(或是可以設定全開放,但不建議)。這步驟有按鈕可以一鍵添加。
2. 找到連接字串
為了能夠連線到 Azure Cosmos 建立的 DB,我們需要先進入剛剛建立好的 Cosmos 系統,選擇左側欄位的 Connection strings。
進去後,我們就會看到一組可供我們於本地端連線的
把這串連接字串複製下來;接下來我們就可以透過 mongosh 直接連線 Cosmos DB 了。要記得,直接複製的字串上還有需要填寫的使用者名稱跟密碼,要填寫正確才能連線喔!
3. 連線到 Cosmos DB
打開終端機,輸入:
向量搜尋
1. 建立 collection
這段我會推薦直接使用 mongo shell 來做,理由如第一段所述。
2. 放入資料
這步驟我會推薦使用 python 來做,如果我們所需要放入的資料很多的情況,使用程式語言自動放入資料是比較輕鬆的作法。
首先安裝 pymongo。
接著連線到資料庫,並且放入資料:
3. 透過向量查詢資料
References