Milvus 概述 ????????
????????向量是神經網絡模型的輸出數據格式,可以有效地對信息進行編碼,在知識庫、語義搜索、檢索增強生成(RAG)等人工智能應用中發揮著舉足輕重的作用。
????????Milvus 是一個開源的向量數據庫,適合各種規模的人工智能應用。
????????Milvus 是一種高性能、高擴展性的向量數據庫,可在從筆記本電腦到大規模分布式系統等各種環境中高效運行。它既可以開源軟件的形式提供,也可以云服務的形式提供。
????????Milvus 是一個開源項目,以 Apache 2.0 許可發布。大多數貢獻者都是高性能計算(HPC)領域的專家,擅長構建大型系統和優化硬件感知代碼。核心貢獻者包括來自 Zilliz、ARM、NVIDIA、AMD、英特爾、Meta、IBM、Salesforce、阿里巴巴和微軟的專業人士。
Embeddings 和 Milvus
????????文本、圖像和音頻等非結構化數據格式各異,并帶有豐富的底層語義,因此分析起來極具挑戰性。為了處理這種復雜性,Embeddings 被用來將非結構化數據轉換成能夠捕捉其基本特征的數字向量。然后將這些向量存儲在向量數據庫中,從而實現快速、可擴展的搜索和分析。
????????Milvus 提供強大的數據建模功能,使您能夠將非結構化或多模式數據組織成結構化的 Collections。它支持多種數據類型,適用于不同的屬性模型,包括常見的數字和字符類型、各種向量類型、數組、集合和 JSON,為您節省了維護多個數據庫系統的精力。
Milvus 為何如此快速?
????????Milvus 從設計之初就是一個高效的向量數據庫系統。在大多數情況下,Milvus 的性能是其他向量數據庫的 2-5 倍。這種高性能是幾個關鍵設計決策的結果:
????????硬件感知優化 :為了讓 Milvus 適應各種硬件環境,????????專門針對多種硬件架構和平臺優化了其性能,包括 AVX512、SIMD、GPU 和 NVMe SSD。
????????高級搜索算法 :Milvus 支持多種內存和磁盤索引/搜索算法,包括 IVF、HNSW、DiskANN 等,所有這些算法都經過了深度優化。與 FAISS 和 HNSWLib 等流行實現相比,Milvus 的性能提高了 30%-70%。
????????C++ 搜索引擎向量數據庫性能的 80% 以上取決于其搜索引擎。由于 C++ 語言的高性能、底層優化和高效資源管理,Milvus 將 C++ 用于這一關鍵組件。最重要的是,Milvus 集成了大量硬件感知代碼優化,從匯編級向量到多線程并行化和調度,以充分利用硬件能力。
????????面向列 :Milvus 是面向列的向量數據庫系統。其主要優勢來自數據訪問模式。在執行查詢時,面向列的數據庫只讀取查詢中涉及的特定字段,而不是整行,這大大減少了訪問的數據量。此外,對基于列的數據的操作可以很容易地進行向量化,從而可以一次性在整個列中應用操作,進一步提高性能。
概念關系圖(邏輯結構)
Milvus數據庫
├── Collection集合
│ ? ├── Partition分區
│ ? │ ? └── Entity實體
│ ? │ ? ? ? └── Fields字段(向量 + 元數據)
│ ? ├── Schema結構
│ ? └── Index索引
├── 查詢操作(Search / Query)
└── 數據一致性機制
示例
1.環境準備
pip install pymilvus
2.連接
from pymilvus import MilvusClient
client = MilvusClient(uri='http://127.0.0.1:19530')
3.創建collection
fields = [FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),FieldSchema(name="name", dtype=DataType.VARCHAR, max_length=64),FieldSchema(name="category", dtype=DataType.VARCHAR, max_length=64),#這里使用結巴分詞 FieldSchema(name="description", dtype=DataType.VARCHAR, max_length=1000, enable_analyzer=True,analyzer_params={"tokenizer": "jieba", "filter": ["cnalphanumonly"]}),# 向量維度 我這里使用openai的embedding生成的向量默認維度是1536# embedding_llm1.embed_documents(titles)FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=1536),# 稀疏向量字段FieldSchema(name="sparse_vector", dtype=DataType.SPARSE_FLOAT_VECTOR)
#添加的 BM25 函數,使得 Milvus 能夠:自動從 title 字段提取稀疏特征;
bm25_function = Function(name="bm25",input_field_names=["title"],output_field_names=["sparse_vector"],function_type=FunctionType.BM25,
)
schema = CollectionSchema(fields=fields,functions=[bm25_function], description="商品向量集合")
client.create_collection(collection_name=COLLECTION_NAME,schema=schema,consistency_level="Strong", # 一致性級別enable_dynamic_field=True,# 動態字段 如果設為 True,Milvus 將自動接受未在 schema 中定義的新字段數據,并將其存儲為 JSON 格式。auto_id=True # 自動生成ID。)
????????定義 schema 時啟用 BM25 函數,指定輸入字段為 title,輸出字段為 sparse_vector(稀疏向量),插入數據時只需提供原始文本,系統會自動調用 BM25 函數生成稀疏向量
????????BM25 是一種經典的信息檢索評分函數(ranking function),用于衡量查詢語句與文檔的相關性。它基于詞頻(TF)、逆文檔頻率(IDF)和文檔長度等因素對結果進行打分。
????????consistency_level是 Milvus 中用于控制 數據讀寫一致性 的參數,它決定了在進行查詢或檢索操作時,系統保證返回的數據與最新寫入數據之間的一致性程度
????????"Strong"強一致性:每次讀取都返回最新的數據,適用于對實時性要求高的場景。
????????"Session"會話一致性:在一個客戶端連接內保證一致性,適合多次查詢的連續操作。
????????"Bound"有界一致性:允許一定時間延遲,性能較好,適合容忍短暫延遲的場景。
????????"Eventually"最終一致性:不保證立即看到寫入結果,性能最優,但可能讀到舊數據
4.插入數據
測試數據:
電子產品類
運動型藍牙耳機
這款運動藍牙耳機專為運動愛好者打造。它采用藍牙5.2技術,連接穩定,即使在運動的過程中大幅度晃動也不會輕易斷連。擁有防水防汗的特性,其外殼經過特殊工藝處理,能有效抵御汗水和雨水的侵蝕,非常適合跑步、健身、騎行等運動場景。音質上,它采用了獨特的音腔設計,增強了低頻效果,讓節奏感強烈的運動音樂更加帶感。耳機采用掛耳式的人體工學設計,貼合耳部輪廓,硅膠材質的耳掛柔軟有彈性,長時間運動佩戴也不會覺得耳朵酸痛,并且穩固性極佳,運動時不會掉落。在續航方面表現不錯,一次充滿電可以連續使用7小時,滿足一場酣暢淋漓的運動所需。
電子產品類
降噪藍牙耳機
這款降噪藍牙耳機主打主動降噪功能。采用先進的藍牙5.3技術,連接穩定又迅速。它配備了專業的降噪芯片,能夠精準識別并過濾外界環境噪音,比如飛機的轟鳴聲、地鐵的嘈雜聲、辦公室的鍵盤敲擊聲等,最高可降低35dB的噪音,讓你沉浸在純凈的音樂世界中。音質方面,它采用了高品質的動圈單元,能夠呈現出豐富細膩的音樂細節,高音清亮,中音飽滿,低音深沉有力。耳機的耳罩采用了柔軟的蛋白皮材質,內部填充了高密度海綿,貼合耳部,佩戴起來非常舒適,長時間使用也不會有壓迫感。續航能力也相當出色,開啟降噪功能后可連續使用6小時,關閉降噪功能則能使用長達9小時。
電子產品類
骨傳導藍牙耳機
這款骨傳導藍牙耳機采用了創新的骨傳導技術,無需堵塞耳道就能傳遞聲音。它采用藍牙5.0技術,連接穩定,并且具備良好的兼容性,能與各種智能設備輕松配對。由于不堵塞耳道,在聽音樂的同時還能感知周圍環境的聲音,保障了使用時的安全性,適合戶外運動、騎行、跑步等場景。音質上,它雖然不能像傳統耳機那樣呈現極致的音質效果,但也能滿足日常基本的聽音樂和通話需求。耳機的機身采用了硅膠材質,柔軟有彈性,可隨意彎曲,佩戴起來十分輕便,僅重28克,并且貼合耳部,運動時不易掉落。續航方面,一次充滿電可連續使用5小時,小巧輕便的充電倉還能為耳機額外充電2 - 3次。
電子產品類
兒童藍牙耳機
這款兒童藍牙耳機專為兒童設計。采用藍牙5.0技術,連接穩定,操作簡單,方便兒童使用。它特別注重兒童的聽力保護,內置了音量限制功能,最大音量不會超過85dB,有效避免音量過大對兒童聽力造成損傷。音質方面,采用了適合兒童聽覺特點的音頻調校,聲音清晰、柔和,讓孩子們能聽到純真的音樂。耳機的頭帶采用了柔軟的硅膠材質,可調節長度,能適應不同年齡段兒童的頭圍大小,佩戴舒適且不會給孩子的頭部造成壓迫感。外觀設計十分可愛,有多種卡通造型和鮮艷的顏色可供選擇,深受孩子們的喜愛。續航能力也不錯,一次充滿電可連續使用4小時,滿足孩子日常聽故事、聽兒歌的需求。
電子產品類
商務藍牙耳機
這款商務藍牙耳機是商務人士的理想選擇。它采用藍牙5.3技術,連接穩定且低延遲,確保在商務通話中不會出現聲音卡頓或延遲的情況。配備了高清麥克風和智能降噪算法,能夠有效過濾周圍環境噪音,在嘈雜的辦公室、咖啡館等場所也能保證清晰的通話質量。音質方面,聲音清晰、準確,能讓對方清楚地聽到你的表達。耳機的設計簡約時尚,采用了入耳式設計,小巧輕便,便于攜帶。耳帽采用了親膚的硅膠材質,佩戴舒適,長時間通話也不會感到不適。續航能力較強,一次充滿電可連續使用7小時,充電倉還能為耳機補充電量,滿足一天的商務使用需求。
電子產品類
智能無線藍牙耳機
這款藍牙耳機采用先進的藍牙5.3技術,連接穩定且快速。擁有高清音質,能夠呈現豐富的音樂細節。人體工學設計,佩戴舒適,長時間使用也不會有不適感。續航能力出色,一次充滿電可連續使用8小時以上。
電子產品類
便攜式移動硬盤
大容量便攜式移動硬盤,擁有2TB的存儲空間,可輕松存儲大量的照片、視頻、文件等。外觀小巧精致,便于攜帶。采用USB3.2高速接口,數據傳輸速度快,能讓你快速備份和讀取數據。
電子產品類
高清智能攝像頭
具備4K超高清分辨率的智能攝像頭,畫面清晰細膩。支持日夜切換功能,即使在夜間也能清晰捕捉畫面。內置智能感應系統,當檢測到異常活動時會及時推送警報信息到你的手機。
家居用品類
多功能養生壺
這款養生壺集煮茶、煲湯、燉燕窩、煮蛋等多種功能于一體。采用優質的玻璃材質,耐高溫且安全無毒。具備精準的溫控系統,能根據不同的食材和需求調節合適的溫度和時間。
家居用品類
智能掃地機器人
智能掃地機器人擁有先進的激光導航技術,能夠快速準確地繪制家居地圖,規劃清掃路線。具備多種清掃模式,如自動清掃、定點清掃、沿邊清掃等。還能通過手機APP遠程控制,讓你隨時隨地輕松清潔家居。
家居用品類
記憶棉床墊
記憶棉床墊采用高品質的記憶棉材質,能夠根據人體的曲線和壓力自動調整形狀,提供精準的支撐,有效緩解身體壓力。透氣性好,能保持睡眠環境的干爽舒適。同時,它還具有靜音效果,讓你享受安靜的睡眠。
服裝配飾類
純棉休閑T恤
采用100%純棉面料,柔軟舒適,透氣性極佳。簡約的設計風格,經典的圓領款式,適合各種場合穿著。多種顏色可選,滿足你的不同搭配需求。
服裝配飾類
真皮男士錢包
這款男士錢包采用優質的頭層牛皮制作,質感柔軟且耐用。內部設計合理,有多個卡槽、鈔位和零錢袋,方便分類存放物品。精致的縫線工藝和簡約的外觀設計,彰顯男士的沉穩與大氣。
服裝配飾類
時尚女士手鏈
時尚女士手鏈由高品質的水晶和合金制成,外觀閃耀奪目。獨特的設計款式,融合了時尚與優雅的元素,能為你的手腕增添一份迷人的魅力。是送給女性朋友的絕佳禮物。
服裝配飾類
防風保暖圍巾
圍巾采用優質的羊毛材質,保暖性能極佳。表面經過特殊處理,具有防風功能,能有效抵御寒冷的天氣。寬大的尺寸,可隨意搭配不同的服裝風格,讓你在寒冷的季節也能保持時尚。
美妝護膚類
美白保濕面膜
這款面膜富含多種美白和保濕成分,如熊果苷、透明質酸等。能夠深入肌膚底層,抑制黑色素的生成,同時為肌膚補充大量水分,讓你的肌膚變得白皙、水潤、有光澤。面膜紙采用輕薄透氣的材質,貼合肌膚,使用起來非常舒適。
美妝護膚類
控油祛痘洗面奶
專為油性痘痘肌設計的洗面奶,具有強大的控油和祛痘功效。含有水楊酸、茶樹精油等成分,能夠深層清潔毛孔,去除多余的油脂和污垢,預防痘痘的產生。洗后肌膚清爽不緊繃,保持水油平衡。
美妝護膚類
持久定妝粉餅
定妝粉餅具有細膩的粉質,能夠輕松貼合肌膚,打造出光滑、啞光的妝效。持久的定妝效果,能讓妝容一整天都保持完美狀態,不易脫妝、花妝。添加了護膚成分,在定妝的同時還能滋養肌膚。
母嬰用品類
嬰兒純棉連體衣
嬰兒連體衣采用天然純棉面料,柔軟親膚,對寶寶的皮膚無刺激。寬松的版型設計,讓寶寶活動自如。精致的包邊工藝,防止刮傷寶寶嬌嫩的肌膚。多種可愛的圖案和顏色可供選擇。
母嬰用品類
兒童安全座椅
兒童安全座椅符合嚴格的安全標準,采用高強度的材料制作,能夠有效保護兒童在乘車過程中的安全。人體工學設計,讓寶寶乘坐舒適。可調節的座椅角度和頭枕高度,適合不同年齡段的兒童使用。
母嬰用品類
嬰兒潤膚霜
專為嬰兒嬌嫩肌膚設計的潤膚霜,含有天然的植物精華,如橄欖油、蘆薈等。能夠滋潤寶寶的肌膚,防止肌膚干燥、皸裂。溫和無刺激,經過嚴格的安全性檢測,讓媽媽們放心使用。
食品飲料類
純牛奶
這款純牛奶源自優質牧場,采用新鮮的生牛乳制作而成。富含豐富的蛋白質、鈣等營養成分,口感醇厚,奶香濃郁。經過嚴格的質量檢測,安全有保障,是全家補充營養的理想選擇。
食品飲料類
堅果禮盒
堅果禮盒內包含多種美味的堅果,如核桃、杏仁、腰果、巴旦木等。這些堅果均經過精心挑選,顆粒飽滿,口感香脆。富含不飽和脂肪酸、維生素和礦物質等營養成分,健康又美味。
食品飲料類
水果茶包
水果茶包由多種新鮮水果和花草混合而成,如草莓、檸檬、玫瑰、薄荷等。口感清新酸甜,具有豐富的果香和花香。富含維生素C等營養成分,有美容養顏、提神醒腦的功效。可直接用開水沖泡,方便快捷。
食品飲料類
手工巧克力
手工制作的巧克力,選用高品質的可可豆,經過精細的加工工藝制作而成。口感絲滑醇厚,有多種口味可供選擇,如牛奶巧克力、黑巧克力、榛果巧克力等。精美的包裝,是送給親朋好友的甜蜜禮物。
代碼:
goods = []with open("../datas/goods.txt", "r", encoding="utf-8") as f:while True:category = f.readline().strip()if category == "":breakname = f.readline().strip()description = f.readline().strip()goods.append({"category": category, "name": name, "description": description})vectors = embedding_llm2.embed_documents([item["description"] for item in goods])# 修改插入數據格式,使其符合schema定義data_to_insert = []for i in range(len(goods)):data_to_insert.append({"category": goods[i]["category"],"name": goods[i]["name"],"description": goods[i]["description"],"vector": vectors[i]})# 插入數據res = client.insert(collection_name=COLLECTION_NAME, data=data_to_insert)print(res)
5.創建索引
# 創建索引參數對象index_params = client.prepare_index_params()# 添加一個索引,指定字段名稱、索引類型、度量類型和參數index_params.add_index(field_name="vector",index_type="HNSW",metric_type="IP",params={"M": 16, "efConstruction": 64})# 為 sparse_vector 字段添加 SPARSE_INVERTED_INDEX 索引index_params.add_index(field_name="sparse_vector",index_type="SPARSE_INVERTED_INDEX",metric_type="BM25",params={"inverted_index_algo": "DAAT_MAXSCORE","bm25_k1": 1.2,"bm25_b": 0.75})# 創建索引client.create_index(COLLECTION_NAME, index_params)
index_type 和 metric_type
????????在 Milvus 中,index_type 和 metric_type 是創建索引時非常關鍵的兩個參數,它們分別用于指定索引類型和距離度量方式。以下是詳細的選項說明:
index_type 索引類型(常用)
📌 推薦組合:對于稠密向量,推薦使用 HNSW + IP;對于稀疏向量,推薦 SPARSE_INVERTED_INDEX。?
metric_type 距離度量類型
注意:某些索引類型只支持特定的 metric_type,例如 HNSW 支持 IP、L2,而 SPARSE_INVERTED_INDEX 只支持 BM25(需配合稀疏向量使用)。
推薦配置建議(基于場景)
M 和 efConstruction ????????
????????在 Milvus 中使用 HNSW(Hierarchical Navigable Small World)索引時,參數 M 和 efConstruction 是兩個關鍵的構建參數,它們直接影響索引的質量
????????M: 圖結構中每個節點連接的鄰居數。默認值:16 建議值:5 ~ 48, M 值越大,圖結構越密集,檢索精度越高,相應的占用內存也越大 構建時間越長
????????M=16:適用于大多數場景,構建速度快、內存占用低。
????????M=32~48:適合對精度要求高、資源充足的場景。
????????efConstruction: 構建索引時搜索候選節點的數量。默認值:64 建議值10 ~ 512,efConstruction越大,索引圖質量越高,查詢效果越好。相應的構建時間越長,efConstruction對內存影響較小
????????efConstruction=64:快速構建,適合測試或小數據集。
????????efConstruction=128~256:高質量索引,適合生產環境。
稠密向量和稀疏向量
稠密向量
????????稠密向量是一個幾乎每個維度都有非零值的固定長度向量,通常用于表示語義信息。
????????數據類型(Milvus 中)FLOAT_VECTOR用于存儲稠密向量。必須指定維度(dim),例如 dim=1536。
特征:
適用模型與場景:
索引推薦:HNSW、IVF_FLAT、IVF_PQ、RHNSW_FLAT
稀疏向量
????????稀疏向量是一種大多數維度為零,只有少數位置有非零值的向量,通常用于關鍵詞或特征計數。
????????數據類型(Milvus 中)SPARSE_FLOAT_VECTOR用于存儲稀疏向量,使用字典格式 {dimension_index: value} 表示
適用模型與場景
如何選擇
6.搜索類型
Milvus 支持各種類型的搜索功能,以滿足不同用例的需求:
-
ANN 搜索:查找最接近查詢向量的前 K 個向量。
-
過濾搜索:在指定的過濾條件下執行 ANN 搜索。
-
范圍搜索:查找查詢向量指定半徑范圍內的向量。
-
混合搜索:基于多個向量場進行 ANN 搜索。
-
全文搜索:基于 BM25 的全文搜索。
-
Rerankers:根據附加標準或輔助算法調整搜索結果順序,完善初始 ANN 搜索結果。
-
獲取:根據主鍵檢索數據。
-
查詢使用特定表達式檢索數據。
向量搜索案例:
#將集合加載到內存中,以便進行查詢操作。client.load_collection(COLLECTION_NAME)search = client.search(collection_name=COLLECTION_NAME,data=[embedding_llm2.embed_query("藍牙耳機")], #embedding進行向量化anns_field="vector", # 指定要檢索的向量字段filter="category == '電子產品類'", #過濾條件output_fields=["name", "category", "description"], #輸出字段limit=3 #返回top3)
bm25全文檢索:
#將集合加載到內存中,以便進行查詢操作。client.load_collection(COLLECTION_NAME)keyword_query = "藍牙耳機"#'drop_ratio_search': 這是 Milvus 中的一個參數,用于設置在全文檢索(基于稀疏向量)過程中可以忽略的低權重特征比例。這里設置為 0.8 表示在搜索過程中會忽略掉 80% 的低權重特征,以提升搜索效率。search_params = {'params': {'drop_ratio_search': 0.8},}search = client.search(collection_name=COLLECTION_NAME,data=[keyword_query], # 搜索文本數據anns_field='sparse_vector', # 確保指定查詢的稀疏向量字段output_fields=['description'], # 輸出字段limit=3,search_params=search_params)print(search)
什么是混合檢索?
? ? ? ? 混合檢索(Hybrid Search)是一種結合全文檢索(如 BM25)和向量相似度檢索(如 ANN,近似最近鄰搜索)的技術,通過融合兩者的結果提升檢索的準確性和覆蓋率。
????????BM25(全文匹配):適用于關鍵詞匹配,捕捉顯式語義。
????????ANN(向量匹配):適用于語義理解,捕捉隱式相關性。
????????混合檢索在實際應用中可以顯著提高召回率和排序質量,尤其適合處理復雜查詢或模糊語義場景。
混合檢索的核心流程
數據建模:
????????存儲原始文本字段(用于 BM25)
????????存儲該文本的 embedding 向量(用于 ANN)
索引構建:
????????對文本字段建立稀疏索引(SPARSE_INVERTED_INDEX + BM25)
????????對向量字段建立稠密索引(如 HNSW, IVF_FLAT)
檢索階段:
????????分別執行 BM25 和 ANN 查詢
????????使用加權評分或排序融合算法(如 Reciprocal Rank Fusion, RRF)合并結果
混合搜索案例
#向量搜索vector_search_params = {"data": [embedding_llm2.embed_query("藍牙耳機")],"anns_field": "vector",#nprobe: 表示在執行 HNSW 索引搜索時,從索引中探測(訪問)的最近鄰子空間(neighborhood cells)的數量"param": {"nprobe": 10},"limit": 3}vector_search_result = AnnSearchRequest(**vector_search_params)# 全文搜索full_text_params = {"data": ["藍牙耳機"],"anns_field": "sparse_vector",#drop_ratio_search: 表示在執行基于 SPARSE_FLOAT_VECTOR 字段的全文搜索時,忽略掉低權重的稀疏特征項的比例。設置為0.2#意味著在搜索過程中會忽略掉權重最低的20 % 的特征項,從而加快查詢速度,但可能會略微降低結果的相關性。"param": {"drop_ratio_search": 0.2},"limit": 3}full_text_result = AnnSearchRequest(**full_text_params)# 初始化 配置 Rerankers 策略ranker = RRFRanker(100)reqs = [vector_search_result, full_text_result]#混合搜索res = client.hybrid_search(collection_name=COLLECTION_NAME,reqs=reqs,ranker=ranker,limit=3,output_fields=["name", "category", "description"] # 同樣指定輸出字段)print("向量搜索請求對象:", vector_search_result)print("全文搜索請求對象:", full_text_result)print("混合搜索結果", res)
????????AnnSearchRequest 是 pymilvus 提供的一個類,用于構建近似最近鄰搜索(Approximate Nearest Neighbor Search)的請求對象。它主要用于 Milvus 的混合搜索(hybrid search)場景中,將多個搜索請求組合在一起。
配置 Rerankers 策略
要對 ANN 搜索結果集進行合并和重新排序,選擇適當的重新排序策略至關重要。Milvus 提供兩種重排策略:
-
加權排名:如果結果需要強調某個向量場,請使用該策略。WeightedRanker 可以為某些向量場賦予更大的權重,使其更加突出。
-
RRFRanker(互易排名融合排名器):在不需要特別強調的情況下選擇此策略。RRFRanker 能有效平衡每個向量場的重要性。
7.刪除文檔
res = client.delete(collection_name=COLLECTION_NAME, ids=[0, 2])res = client.delete(collection_name=COLLECTION_NAME,filter="category == '電子產品類'",
)
8.刪除集合
client.drop_collection(collection_name=COLLECTION_NAME)