一、创建推理端点
将机器学习节点部署的模型服务创建为一个推理端点(参阅这里了解创建推理端点的更多细节)。
PUT _inference/text_embedding/bge-base-zh-service{ "service": "elasticsearch", "service_settings": { "model_id": "bge-base-zh", "num_allocations": 1, "num_threads": 1 }}
二、创建索引
semantic 字段默认用 Elastic 自带的.elser-2-elastic 推理端点(EIS 服务),这是一个稀疏向量嵌入模型,我们可以显式地指定为自己创建的推理端点:
PUT semantic_search_index{ "mappings":{ "properties": { "content_vector":{ "type":"semantic_text", "inference_id":"bge-base-zh-service", // 指定写入和查询的推理端点 }, "content":{ "type":"text", "copy_to":"content_vector" } } }}
三、写入数据
写入的同时,自动调用模型生成向量数据:
PUT semantic_search_index/_doc/1{ "content":"使用semantic search,可以简化数据入库语句"}PUT semantic_search_index/_doc/2{ "content":"使用semantic search,可以简化数据查询语句"}
四、执行语义搜索
执行 match 搜索,查询内容采用自然语言,如下是一个示例:
GET semantic_search_index/_search{ "query": { "match": { "content_vector": { "query": "What is semantic search ?" } } }}