MongoDB Atlas 解鎖 GenAI 應用服務 研討會 投影片 影片
我在會議上有問三個問題
1.如果是用在 Q & A,是 Q轉成 vector or A轉成 vector或是兩者
2.在網路上爬到的文章如果轉成 vector ,是否有前置作業可以讓 vector search的精準度提高
3.中文文章是否要先分詞
使用方式如下
collection.Aggregate().VectorSearch(vectorField1,embededFloatArrary,limit,searchOption);
建議可以先在 Atlas官網上測試所建立的 vector欄位和 Index可成功執行 vector search
參考 How to Do Semantic Search in MongoDB Using Atlas Vector Search去試試向量搜尋 ,這篇文章也包含如何申請一個免費的環境可以使用,只能說 MongoDB在教學資訊及環境上都提供友善方式讓使用者學習
20240620 取得 vector 的方式由 HuggingFace API改為 OpenAI API,目前覺得中文搜尋結果會比較好 。
最近在試 Mongodb Atlas vector search,發現爬回來的文章轉成 embedded vector 後查詢的準確度一直很差,在網路找了文章又學到了一些東西,知道要開始找 chunk的 lib去分割文章再去轉換成 vector
針對這個問題,直接問 ChatGPT,他的回答如下
文章太長對於向量檢索的準確度可能會產生一些影響,具體的影響取決於所使用的模型、文本的內容以及檢索的任務。以下是一些可能的影響:
程式代碼
var searchFilter = SearchBuilders<TEntity>.Search.Text(queryStr , columnName);
var query = collection.Aggregate().Search(searchFilter,null,indexName).ToList();
在 MongoDB Charts如果需要 join其它 collection (RDB table),可以參考 Add a Lookup Field , web GUI是可以直接設定,但如果需要 aggregation 作篩選,例如 $match,我實測的結果會發現沒有效果,所以後來我用的方式是先在 chart data source 的 pipeline 先用 $lookup,這樣在 chart 就可以使用 $match了
一般報表/圖表會有一個需求是要捉取當前固定期間的資料,比如當下 90天前的資料,或是一季/一年等,在 MongoDB Charts我的作法在 datasource 的 pipeline或是 chart 的 query aggregation加上欄位記錄 固定天數前的日期,再用現有欄位比較 $gte這個欄位值,如果大於就顯示
加入欄位
專給 MongoDB使用的圖表工作,可以建置在在自己的環境,請參考 MongoDB Charts 和 MongoDB Charts 安装和使用
除了自行建置之外,官方也有提供雲端版的方案可以整合 Atlas雲端資料庫,建議如果沒有使用 過 Atlas的可以去申請,有一個 500Mb方案是完全免費的,對於初學者來說 MongoDB官方的說明一直都是很友善、易懂且資源很多,不用怕學習不了,對於 Charts來說也是一樣友善,可參考 Visualizing Movie Details或是參考 Sample範本和拖、拉欄位,很快就可以實作一個圖表出來
之前的文章有分享過用 MongoDB 和 Asp.Net MVC 寫一個別人分享的 blog程式,裡面有用到 CKEditor (ASP.Net版),因為需要上傳文件,所以也要用 CKFinder,但是我想要的是 google blogspot的方式,點選圖片按鈕時可以出現一個 dialog,可以上傳後再選擇或是從雲端選擇圖片,最重要的是要有多選,但基本的元件好像無法達到多選,所以想自己找出一個方法可以達成的。目前在多選的部份已經達到這樣的需求,作法如下