開通OSS服務
添加表
在實例詳情>表管理頁,點擊添加表:
填寫表的基礎信息,點擊下一步:
配置說明:
表名稱:可自定義
數據分片數:分片數設置時,各索引表分片數需保持一致;或至少一個索引表分片數為1,其余索引表分片數一致
數據更新資源數:數據更新所用資源數,每個索引默認免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版計費概述
場景模板:向量檢索版內置了3種模板可供用戶選擇:通用、向量-圖片搜索、向量-文本語義模板
數據同步,配置數據源,校驗通過后,點擊下一步:
數據源類型:選擇對象存儲OSS
OSS路徑:訪問OSS文件的路徑,需以/開頭,路徑中不允許包含?、=、&符號
存儲空間(Bucket):OSS的Bucket名稱
時間戳:如果有API的增量數據,該配置表示回追多久的增量數據,系統默認最大能回追3天的API增量數據
OSS路徑在創建好的Bucket名稱點擊進入后-新建目錄-選擇創建號的目錄路徑,此處示例路徑為/opensearch_index_data/:
存儲空間(Bucket) :OSS的Bucket名稱(來源:在開通的OSS服務Bucket里使用創建好的Bucket名稱-如下圖所示)
字段配置,配置完成后,點擊下一步:
案例中配置了2個字段pk、embeddings,樣例數據可參考(樣本數據:oss_test.txt):
CMD=add
pk=999000
embeddings=0.00.0039257140.0098142860.0039257140.00
pk=999000
embeddings=0.00.0039257140
oss中的文件內容可參考下文中的文件格式
必選字段有:主鍵字段和向量字段,主鍵字段為int或string類型并且需要勾選主鍵按鈕,向量字段為float類型并且需要勾選向量字段按鈕;
向量字段默認為多值的float類型,多值分隔符默認使用ha3分割符^] 進行切分(其對應utf編碼為\x1D),也可以輸入自定義多值分隔符
當數據中缺少字段或字段為空時,系統將自動補充默認值,數字類型默認補0,STRING類型默認補空字符串,支持自定義默認值
索引結構配置,配置完成后,點擊下一步:
此處主要針對向量索引進行配置:
主鍵字段、向量字段必須填寫,命名空間字段非必填,可以為空。
僅支持選擇固定的三個字段,不支持新增。
向量維度:根據模型生成的向量按需選擇
向量距離:根據模型生成的向量按需選擇,系統支持的距離類型有兩種:SquareEuclidean和InnerProduct
向量索引算法:根據模型生成的向量按需選擇,系統支持的向量索引算法有量化聚類(Quantized Clustering)、linear、HNSW(Hierarchical Navigable Small World)
實時索引:表示API的增量數據是否需要實時構建向量索引,默認為true
其他高級配置,可點擊展開進行配置,參數說明可參考向量索引通用配置:
確認創建,點擊確認創建后,系統將自動創建配置好的表:
可在變更歷史中查看創建表進度:
當表狀態在使用中時,即可在查詢測試頁面進行查詢測試:
文件格式
文件是建立索引的數據源(注意:需要是utf-8的編碼),有著固定的格式,下面介紹標準的輸入格式。
首先看一個完整的數據文件standard_sample.data的內容
CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_
可以看到上面的數據文件中總共有兩個命令,分別是add、delete每個命令由多行組成,每行都是一個key-value對。 命令與命令之間用'^^\n'分隔,每一對key-value之間以'^_\n'分隔,多值之間以'^]'分隔。下面詳細介紹。
文件分隔符定義
C++編碼 | ASCII 16進制 | 描述 | (emacs/vi)中的顯示形態 | emacs中輸入方法 | vi中輸入方法 |
"\x1F\n" | 1F0A | key value分隔符 | ^_(接換行) | C-q C-7 | C-v C-7 |
"\x1E\n" | 1E0A | 命令分隔符 | ^^(接換行) | C-q C-6 | C-v C-6 |
"\x1D" | 1D | multi value 分隔符 | ^] | C-q C-5 | C-v C-5 |
"\x1C" | 1C | section weight標志符 | ^\ | C-q C-4 | C-v C-4 |
"\x1D" | 1D | section 分隔符 | ^] | C-q C-5 | C-v C-5 |
"\x03" | 03 | sub doc 字段分隔符 | ^C | C-q C-c | C-v C-c |
命令格式定義
Add command formatadd命令表示往索引中增加新的內容。add命令第一行必須為CMD=add,后面是該文檔的field,field順序可以與schema中fields順序一致,所有出現的field必須是fields中指定的。
CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
Delete command formatdelete命令表示從索引中刪除指定的內容。delete命令第一"行"必須為CMD=delete,接下來的"行"為index schema中定義屬性為primary key 的field,以及用于partition hash的field,如果兩個field相同,則只需要出現一個field。
CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^
注意事項
開通的OSS服務,需要和已購買的OpenSearch服務在同一個地域
向量檢索版不支持無地域屬性的OSS的bucket
執行新增OSS數據源操作時,將會自動創建一個服務關聯角色(如已經創建,則不會重復創建)OpenSearch-向量檢索版服務關聯角色,開放搜索使用此角色來訪問您在其他云產品中的資源已完成相應功能。