顯示具有 mongodb 標籤的文章。 顯示所有文章
顯示具有 mongodb 標籤的文章。 顯示所有文章

2023年12月14日 星期四

MongoDB Vecotor Search - 原廠研討會分享

 MongoDB Atlas 解鎖 GenAI 應用服務 研討會 投影片   影片

 我在會議上有問三個問題

1.如果是用在 Q & A,是 Q轉成 vector or A轉成 vector或是兩者

2.在網路上爬到的文章如果轉成 vector ,是否有前置作業可以讓 vector search的精準度提高

3.中文文章是否要先分詞

 

2023年11月22日 星期三

MongoDB C# Driver 2.22版可以支援 Atlas Vector Search

使用方式如下

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,目前覺得中文搜尋結果會比較好 。

2023年11月10日 星期五

文章太長是不是對於 vector search 的準確度下降 - ChatGPT 回答

最近在試 Mongodb Atlas vector search,發現爬回來的文章轉成 embedded vector 後查詢的準確度一直很差,在網路找了文章又學到了一些東西,知道要開始找 chunk的 lib去分割文章再去轉換成 vector 

針對這個問題,直接問 ChatGPT,他的回答如下

文章太長對於向量檢索的準確度可能會產生一些影響,具體的影響取決於所使用的模型、文本的內容以及檢索的任務。以下是一些可能的影響:

2023年3月9日 星期四

Mogodb C# driver 使用 Atlas Search

程式代碼 

var searchFilter = SearchBuilders<TEntity>.Search.Text(queryStr , columnName); 

var query =  collection.Aggregate().Search(searchFilter,null,indexName).ToList();

2022年12月8日 星期四

MongoDB $lookup 注意事項

使用 $lookup串連的 collection,其實會以 array 的方式串接在現有的 collection ,這很重要,因為可能你需要針對欄位作處理,比如 concat字串,可參考文章 $concat with lookup fields? ,一般可以先作 unwind把串接 array 改成物件,或是用 let變成一個新欄位

2021年11月1日 星期一

MongoDB Charts 使用 $lookup join 其它 collection

 在 MongoDB Charts如果需要 join其它 collection (RDB table),可以參考 Add a Lookup Field  , web GUI是可以直接設定,但如果需要 aggregation 作篩選,例如 $match,我實測的結果會發現沒有效果,所以後來我用的方式是先在 chart data source 的 pipeline 先用 $lookup,這樣在 chart 就可以使用 $match了

2021年10月28日 星期四

MongoDB Charts 捉取當前固定期間的資料

 一般報表/圖表會有一個需求是要捉取當前固定期間的資料,比如當下 90天前的資料,或是一季/一年等,在 MongoDB Charts我的作法在 datasource 的 pipeline或是 chart 的 query aggregation加上欄位記錄 固定天數前的日期,再用現有欄位比較 $gte這個欄位值,如果大於就顯示 

加入欄位

2021年10月25日 星期一

MongoDB Charts - 好用的圖表顯示

 專給 MongoDB使用的圖表工作,可以建置在在自己的環境,請參考 MongoDB Charts   和 MongoDB Charts 安装和使用

除了自行建置之外,官方也有提供雲端版的方案可以整合 Atlas雲端資料庫,建議如果沒有使用 過 Atlas的可以去申請,有一個 500Mb方案是完全免費的,對於初學者來說 MongoDB官方的說明一直都是很友善、易懂且資源很多,不用怕學習不了,對於 Charts來說也是一樣友善,可參考 Visualizing Movie Details或是參考 Sample範本和拖、拉欄位,很快就可以實作一個圖表出來




2019年7月11日 星期四

使用 ASP.NET Core連結 MongoDB Atlas

MongoDB Atlas 說明 (官網的文件寫的非常詳細,對於初學者有很大幫助)
Download .NET Core 2.2
ASP.NET Core 2.2 簡介 
Visual Studio Code (參考 使用Visual Studio Code开发.NET Core看这篇就够了 安裝 C#)

MongoDB Atlas是官方 MongoDB雲端的方案,可以建立一個 Free Tier Cluster,容量大小是有限制的。

MongoDB對於各語言都有對應的 driver,對 C#也有很好的支持, 2017年 12月就使用 ASP.Net Core 1.x的版本連結至 Atlas時,在本機端 (Windows)是沒有問題的,但因為我想使用 docker + jenkins佈署程式到 CentOS卻發生問題,後來在 MongoDB官網說明,.Net Core library在 Linux or OSX不支援 SNI TLS Extension,所以無法連到 Atlas Free Tier Cluster,所以後續開發程式改用別的方法進行。

但最近 MongoDB官網提出新的說明,只要使用 .Net Core 2.1以上的版本就可以開始連線,這部分用 Visual Studio Code使用 ASP.NET Core 2.2進行程式測試,在本機端 (Windows) OK,用 Docker在 CentOS上測試也沒問題。

2017年3月31日 星期五

ELK Stack Docker image 實作 docker log失敗,但成功設定 Elasticsearch 與 MongoDB連結

ELK Stack官網說明:An Introduction to the ELK Stack (Now the Elastic Stack)

好用的工具,當然也有 docker image,我所使用的是這一個 https://github.com/deviantony/docker-elk,這一個也可以參考 https://hub.docker.com/r/blacktop/elastic-stack/

原本我是想要實作把我所有 docker log放到 ELK Stack,所以有建一個 VM用來使用 ELK Stack,不與原本的 Docker VM在一起。

參考 Docker Logging with the ELK Stack — Part One
文章有提到可以使用三種方式把 docker logs 轉到 ELK Stack的 Logstash上
1.使用 Filebeat
2.使用 docker logging driver
3.使用 Logspout

作者使用 docker logging driver作範列,並修改 Logstash 的設定檔,應該會成功,但我實作的結果並沒有如預期,也不知道原因,使用 docker logs @LogstashContainerName,看起來是有連結的記錄在,但是在 Elasticsearch上並沒有相關 index產生。這部份想再用 Logspout再試看看。

在實作的過程中想到之前就想把 MongoDB資料與 Elasticsearch作連結,讓 Elasticsearch可以作 index,這次剛好有 Elasticsearch,所以就來實作看看。

MongoDB與 Elasticsearch連結的部份就要使用 mongodb-connector (https://github.com/mongodb-labs/mongo-connector)

connector要看不同版本的 Elasticsearch而下載,我的 ELK Stash內的 Elasticsearch為 5.*,所以要下載 5的版本,所以在 ELK Stash VM上安裝 connector,指令如下
pip install 'mongo-connector[elastic5]'

如果你的 MongoDB不是 Replica Set的話,記得要轉成 Replica Set,就算是一台也可以,不管你的 MongoDB是不是在 Docker上。而最好建立一個 mongodb 帳號是有 backup權限的,再用這個帳號讓 Elasticsearch可以連結,我就有遇過一家資訊服務公司,他所賣的產品有使用到 MongoDB,但完全不設帳號、宓碼,難怪最近 MongoDB被加密要錢。

最後要建立一個 config.json檔 https://github.com/mongodb-labs/mongo-connector/wiki/Configuration%20Options
這邊多花一些時間設定 MongoDB的位置,帳號、密碼,還有那些 document, collection需要被索引
最後再執行 mongo-connector  -c config.json
再看看 Elasticsearch是否有 index產生,再到 Kinaba設定就可以看到資料了




2016年4月21日 星期四

mongoDB .Net Driver 使用 MapReduce

目前有一個需求,在 mongoDB的一個 collection,有一個屬性 created_date記錄資料建立時的日期,我希望利用這個屬性,以30天為一個單位找出每個間隔日期,在關連式資料庫會使用如下 SQL來完成需求:

SELECT CONVERT(varchar(10), DATEADD(d, (datediff(d,GETDATE(),created_date) /30)*30,GETDATE()),111)
 FROM [DATA].[dbo].[expense]
 group by CONVERT(varchar(10), DATEADD(d, (datediff(d,GETDATE(),created_date) /30)*30,GETDATE()),111)

這樣捉出來的資料如下:
2015/12/23
2015/10/24
2015/11/23

而我的專案是 ASP.Net MVC 5,所以有使用 mongoDB .Net Driver 2.2,一開始利用 LINQ寫法如下:
 var query = fRepo.GetAll().GroupBy(x =>
             DateTime.Now.AddDays(((int)(DateTime.Now.Subtract(DateTime.ParseExact(x.Date, "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture)).TotalDays) / Day30) * (-1 * Day30)).ToString("yyyy/MM/dd")
      
           ).Select(x => new DayPeriod { date1 =x.Key) }).OrderBy(x => x);

2016年3月1日 星期二

.Net MongoDB Driver 學習文件

.NET MongoDB Driver Documentation (2.2),有在用 C#和 MongoDB開發相關系統的,這邊可以找到如何用 LINQ和其它技巧加速你的開發

MongoDB 管理工具

MongoDB Integration and Tools Admin UIs  , 2016 Best MongoDB GUI 這邊有介紹多個管理工具,第三方的大部份都是用 Node.js寫的,目前我只用過 NoSQL Manager for MongoDB試用版,因為它是 windows的,裝了就可以用,跟你使用 PL/SQL Developer連 Oracle DB是差不多的。如果不想直接下指令的可以參考看看,當然還有更強大的功能可以管你的 mongoDBs.

2016 Best MongoDB GUI

2015年12月29日 星期二

試作 CKEditor 圖片選擇器 ( image upload )




之前的文章有分享過用 MongoDB 和 Asp.Net MVC 寫一個別人分享的 blog程式,裡面有用到 CKEditor (ASP.Net版),因為需要上傳文件,所以也要用 CKFinder,但是我想要的是 google blogspot的方式,點選圖片按鈕時可以出現一個 dialog,可以上傳後再選擇或是從雲端選擇圖片,最重要的是要有多選,但基本的元件好像無法達到多選,所以想自己找出一個方法可以達成的。目前在多選的部份已經達到這樣的需求,作法如下

2015年12月17日 星期四

Spark直接存取 MongoDB

參考文件 Stratio spark-mongodb First Step

使用 spark連結 mongoDB有兩種方式,一種要透過 Hadoop,而另一種就是使用 Stratio直接連接 MongoDB,視需要來使用不同的連接方式,因為我是初學者,所以先用直接連接的方式,按照步驟設定,目前可以測試成 Spark SQL查詢 mongoDB資料,但使用 Spark Shell時會出現 String Cast Exception。我要再多問問 google大神是否能找出解答.......

2015年12月16日 星期三

Docker Machine 快速建置 docker VM

  官網         GitHub


這個真的太好用了,最近用來建置 mongoDB Replica SetODOO(openERP),非常建議一定要試看看,一下子就完成了,如果要安裝的話要使用 docker toolbox就可了。


2015年10月29日 星期四

建構檔案管理及全文檢索的網站 - 架構視意圖



近期要使用下列的技術自行建立一個全文檢索功能的網站,管理使用者上傳的任何文件,實作中有任何進度會再進一步分享


2014年9月2日 星期二

Unclean shutdown detected on MongoDB

參考文章:Recover Data after an Unexpected Shutdown

會有一個 mongod.lock的檔案產生,如果檔案大小不為 0就會無法正常開啟 mongoDB

解決方法有兩種

1.複製一份資料
   mongod --dbpath /data/db --repair --repairpath /data/db0
   再開啟新的檔案  mongod --dbpath /data/db0

2.直接蓋掉原檔
    先移除 mongod.lock
    執行 mongod --dbpath /data/db --repair