国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch:語(yǔ)義搜索即服務(wù)處于卓越搜索的中心

這篇具有很好參考價(jià)值的文章主要介紹了Elasticsearch:語(yǔ)義搜索即服務(wù)處于卓越搜索的中心。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者:來自 Elastic?Sherry Ger, Stephen Brown

對(duì)于許多企業(yè)來說,搜索卓越中心(center of excellence - COE)向其用戶提供搜索服務(wù),從不同的數(shù)據(jù)源中整理知識(shí),并將搜索功能集成到其內(nèi)部和外部應(yīng)用程序中。Elasticsearch,這個(gè) “支撐著互聯(lián)網(wǎng)上大約 90% 的搜索欄” 的分布式搜索平臺(tái),通常是企業(yè)搜索 COE 的首選工具。隨著 ChatGPT 的廣泛流行,用戶發(fā)現(xiàn) LLM(大型語(yǔ)言模型)具有抓住含義的神奇能力。這引發(fā)了對(duì)企業(yè)搜索 COE 提供增強(qiáng)型搜索體驗(yàn)的迫切需求:一種直觀、自然、上下文驅(qū)動(dòng)且能輕松識(shí)別用戶意圖的搜索體驗(yàn)。Elasticsearch,最受歡迎的向量數(shù)據(jù)庫(kù),支持規(guī)模化的全向量搜索,并與基于轉(zhuǎn)換器的 LLM 原生集成;Elasticsearch 相關(guān)性引擎(ESRE)使搜索 COE 能夠支持安全、可擴(kuò)展且高性能的企業(yè)級(jí)語(yǔ)義搜索。

在這個(gè)兩部分的博客中,我們將探討如何使用 Elastic Learned Sparse EncodeR(ELSER)來實(shí)現(xiàn)并擴(kuò)展搜索 COE 的語(yǔ)義搜索服務(wù),ELSER 是 Elastic 訓(xùn)練的一個(gè)后交互模型,能夠提供開箱即用的語(yǔ)義搜索能力,無需任務(wù)特定的微調(diào)。我們將在博客的第一部分中探討在為開發(fā)人員提供內(nèi)部 wiki 文章的語(yǔ)義搜索的用例,實(shí)施此過程以及從中獲得的經(jīng)驗(yàn)教訓(xùn),重點(diǎn)關(guān)注以下領(lǐng)域:

  • 模型選擇 - model selection
  • 模式設(shè)計(jì) - schem design
  • 數(shù)據(jù)攝入 - data ingestion
  • 訪問控制 - access control
  • 搜索技術(shù) - search techniques

備注:此博客的所有代碼和內(nèi)容都可以在這里找到。

在博客的下一部分中,我們將調(diào)查使用 Elastic Search 應(yīng)用程序向開發(fā)人員擴(kuò)展搜索服務(wù)的情況。

模型選擇

實(shí)現(xiàn)語(yǔ)義搜索的第一個(gè)任務(wù)是選擇一個(gè)嵌入模型,該模型應(yīng)具備以下特點(diǎn):

  • 將文本及其含義轉(zhuǎn)換為數(shù)值向量表示
  • 適用于你的用例

有許多可選項(xiàng),包括商業(yè)模型如 OpenAI、Cohere 和 Anthropic,以及 HuggingFace 上托管的開源模型,例如 Mistral 7B 或 Llama 2。此外,許多企業(yè)擁有自己的數(shù)據(jù)科學(xué)團(tuán)隊(duì),他們已經(jīng)使用內(nèi)部數(shù)據(jù)微調(diào)了自己的 LLM 模型。

選擇現(xiàn)有的 LLM 用于搜索 COE 的挑戰(zhàn)在于該模型可能已經(jīng)在特定領(lǐng)域的數(shù)據(jù)集上進(jìn)行了訓(xùn)練。通常情況下,搜索 COE 必須滿足各種各樣的用例,并且可能沒有數(shù)據(jù)科學(xué)資源來對(duì)基礎(chǔ)模型進(jìn)行領(lǐng)域適應(yīng)。

Elastic Learned Sparse EncodeR(ELSER)是一種檢索模型,專為開箱即用用例設(shè)計(jì),因此對(duì)于優(yōu)先考慮靈活性、速度和簡(jiǎn)化實(shí)施的搜索 COE 來說,選擇它是一個(gè)很容易的選擇。對(duì)于本博客,我們將使用 ELSER 來處理我們的用例,因?yàn)槲覀冎惶幚碛⑽奈臋n,并且可以通過單擊在 Elasticsearch 中部署該模型。對(duì)于多語(yǔ)言向量搜索,Elasticsearch 提供了類似的一鍵支持,支持 E5 嵌入模型。

下圖描述了向量搜索的基礎(chǔ)知識(shí)。語(yǔ)義搜索是向量搜索的一個(gè)子集,因?yàn)槲覀冎魂P(guān)注文本。

Elasticsearch:語(yǔ)義搜索即服務(wù)處于卓越搜索的中心,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,全文檢索,數(shù)據(jù)庫(kù)

模式設(shè)計(jì)

對(duì)于我們的用例來說,一個(gè) “必須具備” 的功能是根據(jù)用戶查詢返回文章中最相關(guān)的段落,以及元數(shù)據(jù)、原始文檔的 URL、發(fā)布和更新日期以及 wiki 的來源。文檔的長(zhǎng)度不一,往往超過 ELSER 模型的最大輸入令牌限制(512),需要將文本 “分塊” 以避免截?cái)唷4送?,我們可以將文章的元?shù)據(jù)與向量嵌入一起存儲(chǔ)在 Elasticsearch 中。

與純向量數(shù)據(jù)庫(kù)不同,Elasticsearch 既可以對(duì)文本執(zhí)行傳統(tǒng)的 BM25 搜索,也可以原生地過濾和聚合元數(shù)據(jù)(時(shí)間性、數(shù)值型、空間性、布爾等)。

這意味著 Elasticsearch 可以在同一個(gè)數(shù)據(jù)存儲(chǔ)中以及在單個(gè)搜索請(qǐng)求中執(zhí)行所有這些技術(shù)以及執(zhí)行向量搜索。無需預(yù)處理/后處理文本或向量,也無需在應(yīng)用層或另一個(gè)數(shù)據(jù)存儲(chǔ)中關(guān)聯(lián)向量搜索結(jié)果。這大大降低了應(yīng)用復(fù)雜性和所需工具的數(shù)量。

有了明確的用例需求,我們就可以創(chuàng)建我們的映射了。

    PUT dev_wiki_elser
    {
      "mappings": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "access": {
            "type": "keyword"
          },
          "created_at": {
            "type": "date",
            "format": "iso8601"
          },
          "key_phrases": {
            "type": "text"
          },
          "links": {
            "type": "text"
          },
          "passages": {
            "type": "nested",
            "properties": {
              "is_truncated": {
                "type": "boolean"
              },
              "model_id": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "passage_tokens": {
                "type": "sparse_vector"
              },
              "text": {
                "type": "text"
              }
            }
          },
          "source": {
            "type": "keyword"
          },
          "summary": {
            "type": "text"
          },
          "updated_at": {
            "type": "date",
            "format": "iso8601"
          }
        }
      }
    }

我們將嵌套字段類型用于原始文本塊及其使用 ELSER 創(chuàng)建的相應(yīng)稀疏向量嵌入。 嵌套字段類型是一種特殊類型,其中每個(gè)內(nèi)部文檔都作為其自己的文檔進(jìn)行索引,并且其引用與包含文檔或父文檔一起存儲(chǔ)。 使用嵌套字段類型,我們不會(huì)為每個(gè)文本塊復(fù)制元數(shù)據(jù)。 此外,我們不會(huì)索引原始文檔,因?yàn)槲臋n的各個(gè)部分在 passage 字段中可用。 另一個(gè)細(xì)節(jié)是 summary 字段包含文章的標(biāo)題。

使用 Elastic Ingest Pipeline 進(jìn)行數(shù)據(jù)攝入

Elasticsearch 的推斷處理器允許我們?cè)跀z入文檔時(shí)創(chuàng)建稀疏向量嵌入。腳本處理器將 article_content 分區(qū)為少于 512 個(gè)項(xiàng)的段落,將文本轉(zhuǎn)換為向量嵌入,并將文本和嵌入都索引到嵌套字段 passages 中。攝入管道是從博客 “通過攝入管道將大型文檔分塊加上嵌套向量等于簡(jiǎn)單的段落搜索” 中調(diào)整而來,該博客演示了使用攝入推斷處理器將文本分塊并轉(zhuǎn)換為 LLM 模型中導(dǎo)入 Elasticsearch 的密集向量的過程。在這里,我們使用相同的分塊技術(shù)通過分隔符來調(diào)用 ELSER 創(chuàng)建稀疏向量嵌入。

    PUT _ingest/pipeline/elser-v2-dev-wiki2
    {
      "processors": [
        {
          "script": {
            "description": "Chunk body into sentences by looking for . followed by a space",
            "lang": "painless",
            "source": """
              String[] envSplit = /((?<!M(r|s|rs)\.)(?<=\.) |(?<=\!) |(?<=\?) )/.split(ctx['article_content']);
              ctx['passages'] = new ArrayList();
              int i = 0;
              boolean remaining = true;
              if (envSplit.length == 0) {
                return
              } else if (envSplit.length == 1) {
                Map passage = ['text': envSplit[0]];ctx['passages'].add(passage)
              } else {
                while (remaining) {
                  Map passage = ['text': envSplit[i++]];
                  while (i < envSplit.length && passage.text.length() + envSplit[i].length() < params.model_limit) {passage.text = passage.text + ' ' + envSplit[i++]}
                  if (i == envSplit.length) {remaining = false}
                  ctx['passages'].add(passage)
                }
              }
              """,
            "params": {
              "model_limit": 400
            }
          }
        },
        {
          "foreach": {
            "field": "passages",
            "processor": {
              "inference": {
                "model_id": ".elser_model_2_linux-x86_64",
                "input_output": [
                  {
                    "input_field": "_ingest._value.text",
                    "output_field": "_ingest._value.passage_tokens"
                  }
                ],
                "on_failure": [
                  {
                    "append": {
                      "field": "_source._ingest.inference_errors",
                      "value": [
                        {
                          "message": "Processor 'inference' in pipeline 'elser-v2-dev-wiki' failed with message '{{ _ingest.on_failure_message }}'",
                          "pipeline": "elser-v2-dev-wiki",
                          "timestamp": "{{{ _ingest.timestamp }}}"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "remove": {
            "field": [
              "article_content"
            ]
          }
        }
      ]
    }

作為管道的一部分,我們從索引中刪除了article_content,因?yàn)閮?nèi)容在 passages 字段的分塊中已經(jīng)可用。

這里使用的分塊技術(shù),通過句尾標(biāo)點(diǎn)創(chuàng)建 passages,是一種基本技術(shù)。有關(guān)使用各種方法進(jìn)行分塊的詳細(xì)信息和代碼,請(qǐng)參閱用于語(yǔ)義搜索的 token 計(jì)算。此外,Elasticsearch 中的原生分塊功能即將推出。

對(duì)于這篇博客,我們將使用管道攝入 4 個(gè)公開的樣本文檔。這些文檔是關(guān)于配置流量過濾的 Elastic Cloud 指南。其中一個(gè)文檔具有 "access": "private"。

    POST dev_wiki_elser/_doc?pipeline=elser-v2-dev-wiki
    {
      "summary": "IP traffic filters",
      "access": "private",
      "@timestamp": "2023-08-07T08:15:12.590363000Z",
      "key_phrases": """- Traffic filtering\\n- IP address \\n- CIDR block \\n- Egress IP filters \\n- Ingress IP filters\\n- Inbound IP filters\\n- Outbound IP filters\\n- IPv4 \\n- VPC Endpoint Gateway \\n- VPC Endpoint Interface \""",
      "updated_at": "2023-08-07T08:15:14.756374+00:00",
      "created_at": "2023-08-03T19:54:31.260012+00:00",
      "links": [
    "https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-ip.html"
        ],
        "source": "CLOUD_INFRASTRACTURE_DOCUMENT",
        "article_content": """Traffic filtering, by IP address or CIDR block, is one of the security layers available in Elasticsearch Service. It allows you to limit how your deployments can be
    …
        Select the Delete icon. The icon is inactive if there are deployments assigned to the rule set.
        """
    }

其他三個(gè)具有 “access”: “public” 屬性。 以下是有關(guān)配置 AWS Privatelink 流量過濾器的文章。

    POST dev_wiki_elser/_doc?pipeline=elser-v2-dev-wiki
    {
      "summary": "AWS PrivateLink traffic filter",
      "access": "public",
      "@timestamp": "2023-08-07T08:15:12.590363000Z",
      "key_phrases": "- AWS\\\\n- PrivateLink \\\\n- VPC \\\\n- VPC Endpoint \\\\n- VPC Endpoint Service \\\\n- VPC Endpoint Policy \\\\n- VPC Endpoint Connection \\\\n- VPC Endpoint Interface \\\\n- VPC Endpoint Gateway \\\\n- VPC Endpoint Interface \\",
      "updated_at": "2023-08-07T08:15:14.756374+00:00",
      "created_at": "2023-08-03T19:54:31.260012+00:00",
      "links": [
        "https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-vpc.html"
        ],
        "source": "CLOUD_INFRASTRACTURE_DOCUMENT",
        "article_content": """Traffic filtering, to only AWS PrivateLink
    …
        On the Security page, under Traffic filters select Remove."""
    }

另外兩個(gè)文檔非常相似,一個(gè)是關(guān)于 Azure Private Link 流量過濾器的,另一個(gè)是關(guān)于 GCP Private Service Connect 流量過濾器的。

訪問控制

Elasticsearch 支持基于角色的訪問控制,包括原生支持字段和文檔級(jí)別的訪問控制;這大大減少了保護(hù)應(yīng)用程序所需的操作和維護(hù)復(fù)雜性。在我們的開發(fā)者 wiki 用例中,我們可以根據(jù) access 字段值限制對(duì)文檔的訪問。例如,標(biāo)記為 private 的文檔不應(yīng)對(duì)屬于public_documents 用戶角色的用戶可訪問,即具有屬性access: private 的文檔對(duì)于擁有 public_documents 角色的用戶而言是不存在的。除了限制擁有 public_documents 用戶角色的用戶對(duì)文檔的訪問外,我們還可以移除對(duì) access 字段的可見性。

注意:通過 REST API PUT 角色的代碼包含在 gist 中。

Elasticsearch:語(yǔ)義搜索即服務(wù)處于卓越搜索的中心,Elasticsearch,AI,Elastic,elasticsearch,大數(shù)據(jù),搜索引擎,全文檢索,數(shù)據(jù)庫(kù)

用戶 sherry 具有 public_documents 角色。 對(duì)于該用戶,對(duì)索引進(jìn)行簡(jiǎn)單計(jì)數(shù)將僅返回 3 個(gè)具有 "access": "public"?屬性的文檔。

 curl -u sherry:my_password -XGET https://my-cluster.aws.elastic-cloud.com/dev_wiki_elser/_count/?pretty

響應(yīng):

    {
      "count" : 3,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      }
    }

此外,查看索引映射的調(diào)用將僅返回用戶被授權(quán)的字段。

    curl -u sherry:my_password -XGET https://my-cluster.aws.elastic-cloud.com/dev_wiki_elser/_mapping/?pretty
    {
      "dev_wiki_elser" : {
        "mappings" : {
          "properties" : {
            "@timestamp" : {
              "type" : "date"
            },
            "created_at" : {
              "type" : "date",
              "format" : "iso8601"
            },
            "key_phrases" : {
              "type" : "text"
            },
            "links" : {
              "type" : "text"
            },
            "passages" : {
              "type" : "nested",
              "properties" : {
                "passage_tokens" : {
                  "type" : "sparse_vector"
                },
                "text" : {
                  "type" : "text"
                }
              }
            },
            "source" : {
              "type" : "keyword"
            },
            "summary" : {
              "type" : "text"
            },
            "updated_at" : {
              "type" : "date",
              "format" : "iso8601"
            }
          }
        }
      }
    }

有了這種基于角色的訪問控制(role-based control access - RBAC),擁有 public_documents 角色的用戶將只能搜索和訪問他們有權(quán)限的文檔和字段。這是一個(gè)簡(jiǎn)單但強(qiáng)大的例子,展示了如何在 Elasticsearch 中本地輕松地保護(hù)數(shù)據(jù)和內(nèi)容。此外,Elasticsearch 完全支持其他企業(yè)級(jí)認(rèn)證/授權(quán)框架,如 SAML、LDAP、Active Directory 等,因此利用這些框架來控制對(duì)數(shù)據(jù)的訪問只是簡(jiǎn)單的配置問題。

搜索技術(shù)

現(xiàn)在,我們準(zhǔn)備轉(zhuǎn)向語(yǔ)義搜索。請(qǐng)注意,搜索相關(guān)性調(diào)優(yōu)是一個(gè)迭代過程,可能需要我們回頭使用不同于我們已采用的模型和/或修改索引模式。

此外,向我們的語(yǔ)義搜索查詢中添加元數(shù)據(jù)過濾可以提高相關(guān)性。同時(shí),結(jié)合使用不同的搜索算法也是優(yōu)化結(jié)果的另一個(gè)選項(xiàng),比如將 BM25 與 ELSER 一起使用,使用倒數(shù)排名融合(RRF)進(jìn)行混合搜索,使用密集向量與 ELSER 以及它們的某些組合。Elasticsearch 原生支持所有這些功能。

我們用例的語(yǔ)料庫(kù),開發(fā)者 wiki 文檔,傾向于包含非常相似的主題和術(shù)語(yǔ)。以下查詢僅使用 ELSER 向量嵌入檢索關(guān)于配置過濾規(guī)則集,以連接 Google Private Service Connect 到 Elastic Cloud 部署的最相關(guān)段落。我們已將 "_source" 設(shè)置為 "false",因?yàn)槲覀冎恍枰敵?summary 或 title、URL 和文章的相關(guān)部分。為了清晰起見,我們跳過了日期。

    GET dev_wiki_elser/_search
    {
      "_source": "false",
      "fields": [
        "summary",
        "links"
      ],
      "query": {
        "nested": {
          "path": "passages",
          "score_mode": "max",
          "query": {
            "text_expansion": {
              "passages.passage_tokens": {
                "model_id": ".elser_model_2_linux-x86_64",
                "model_text": "How to configure traffic filter rule set private link google"
              }
            }
          },
          "inner_hits": {
            "size": 1,
            "_source": false,
            "fields": [
              "passages.text"
            ]
          }
        }
      }
    }

不幸的是,返回的第一篇文章是關(guān)于如何為 AWS 配置流量過濾器集,而不是 Google Cloud 的文章。這并不令人驚訝,因?yàn)?“private link” 是一個(gè)描述 VPCs 之間安全鏈接的常用詞匯,最初由亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)使用,就像 Kleenex 之于面巾紙一樣;盡管其在 Google Cloud Platform 中的等效物被稱為私有連接服務(wù),但它被用戶廣泛采用。

    {
      "took": 19,
      "timed_out": false,
      "_shards": {
       …
      },
      "hits": {
        "total": {
          "value": 4,
          "relation": "eq"
        },
        "max_score": 20.017376,
        "hits": [
          {
            "_index": "dev_wiki_elser",
            "_id": "UGxiOY0Bds674Ci9z6yW",
            "_score": 20.017376,
            "_source": {},
            "fields": {
              "summary": [
                "AWS PrivateLink traffic filter"
              ],,
              "links": ["https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-vpc.html"]
            },
            "inner_hits": {
              "passages": {
                "hits": {
                  "total": {
                    "value": 24,
                    "relation": "eq"
                  },
                  "max_score": 20.017376,
                  "hits": [
                    {
                      "_index": "dev_wiki_elser",
                      "_id": "UGxiOY0Bds674Ci9z6yW",
                      "_nested": {
                        "field": "passages",
                        "offset": 17
                      },
                      "_score": 20.017376,
                      "fields": {
                        "passages": [
                          {
                            "text": [
                              """Or, select Dedicated deployments to go to the deployments page to view all of your deployments.
        Under the Features tab, open the Traffic filters page.
        Select Create filter.
        Select Private link endpoint.
    ...

這就是我們映射中的 key_phrases 字段發(fā)揮作用的地方。在我們的用例中,文章附有關(guān)鍵詞和短語(yǔ),這為將語(yǔ)義搜索與傳統(tǒng)的 BM25 搜索相結(jié)合提供了一個(gè)絕佳的方式。

通常,內(nèi)容并沒有關(guān)鍵詞/短語(yǔ),但這可以通過使用 LLM 來執(zhí)行關(guān)鍵詞提取輕松解決,這樣可以提煉出文章的精華。這可以通過使用公共的 LLM,如 OpenAI 或 Gemini,或者使用本地托管的 LLM,如 Mistral 7 或 llama2 來實(shí)現(xiàn)。請(qǐng)?jiān)谙乱黄┛椭辛粢膺@一點(diǎn)。

將我們?cè)嫉奈谋緮U(kuò)展搜索和對(duì) key_phrases 字段的 match 查詢包裹在一個(gè) bool 查詢中,確保如預(yù)期返回正確的文檔。

    GET dev_wiki_elser/_search
    {
      "_source": "false",
      "fields": [
        "summary",
        "links"
      ],
      "query": {
        "bool": {
          "should": [
            {
              "nested": {
                "path": "passages",
                "score_mode": "max",
                "query": {
                  "text_expansion": {
                    "passages.passage_tokens": {
                      "model_id": ".elser_model_2_linux-x86_64",
                      "model_text": "How to configure traffic filter rule set private link google"
                    }
                  }
                },
                "inner_hits": {
                  "size": 1,
                  "_source": false,
                  "fields": [
                    "passages.text"
                  ]
                }
              }
            },
            {
              "match": {
                "key_phrases": "How to configure traffic filter rule set private link google"
              }
            }
          ]
        }
      }
    }

查詢的響應(yīng)正確標(biāo)識(shí)了相關(guān)文章。

    {
      "took": 22,
      "timed_out": false,
      "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 4,
          "relation": "eq"
        },
        "max_score": 22.327188,
        "hits": [
          {
            "_index": "dev_wiki_elser",
            "_id": "UmxjOY0Bds674Ci9Dqzy",
            "_score": 22.327188,
            "_source": {},
            "fields": {
              "summary": [
                "Google Private Service Connect"
              ],
              "links": [
                "https://www.elastic.co/guide/en/cloud/current/ec-traffic-filtering-psc.html"
              ]
            },
            "inner_hits": {
              "passages": {
                "hits": {
                  "total": {
                    "value": 22,
                    "relation": "eq"
                  },
                  "max_score": 19.884687,
                  "hits": [
                    {
                      "_index": "dev_wiki_elser",
                      "_id": "UmxjOY0Bds674Ci9Dqzy",
                      "_nested": {
                        "field": "passages",
                        "offset": 16
                      },
                      "_score": 19.884687,
                      "fields": {
                        "passages": [
                          {
                            "text": [
                              """Add the Private Service Connect rules to your deployments
                              …

我們針對(duì)該用例嘗試的另一種技術(shù)是具有倒數(shù)排名融合的混合搜索。 對(duì)于我們的用例,該方法不如帶有文本擴(kuò)展和 BM25 的簡(jiǎn)單布爾查詢有效。 此外,由于我們使用的分塊技術(shù),盡管相關(guān)性很好,但響應(yīng)段落通常從段落的中間開始。 我們能夠美化應(yīng)用層的響應(yīng)。

總結(jié)

在這篇博客中,我們探索了在企業(yè)卓越中心實(shí)施語(yǔ)義搜索的過程。

  • 模型選擇:ELSER 是一個(gè)為開箱即用用例設(shè)計(jì)的檢索模型,這使得它成為尋求靈活性、速度和流線型實(shí)施的搜索中心的簡(jiǎn)單選擇。
  • 模式設(shè)計(jì):與純向量數(shù)據(jù)庫(kù)不同,Elasticsearch 同樣可以執(zhí)行傳統(tǒng)的 BM25 搜索,并且能夠在同一上下文數(shù)據(jù)庫(kù)和查詢中原生地過濾和聚合元數(shù)據(jù)以及向量搜索。其結(jié)果是能夠顯著簡(jiǎn)化應(yīng)用復(fù)雜性和相比于純向量數(shù)據(jù)庫(kù)所需的工具數(shù)量。使用嵌套字段類型來存儲(chǔ)原始文本的塊及其對(duì)應(yīng)的由 ELSER 創(chuàng)建的稀疏向量嵌入,是一種存儲(chǔ)和搜索數(shù)據(jù)的高效方式。
  • 數(shù)據(jù)攝入:Elasticsearch 推理處理器允許我們?cè)跀z入文檔時(shí) “分塊” 并創(chuàng)建稀疏向量嵌入。這一切都可以在 Elasticsearch 內(nèi)完成,無需額外的工具和預(yù)處理。Elasticsearch 即將推出原生分塊功能。
  • 訪問控制:Elasticsearch 擁有強(qiáng)大的原生 RBAC 控制,以限制/控制訪問,包括字段和文檔級(jí)別的訪問控制,這大大減少了保護(hù)數(shù)據(jù)和應(yīng)用所需的操作和維護(hù)復(fù)雜性。
  • 搜索技術(shù):語(yǔ)義搜索是一個(gè)迭代過程,可能需要調(diào)整或結(jié)合多種搜索技術(shù)來產(chǎn)生最相關(guān)的結(jié)果。在這個(gè)案例中,我們發(fā)現(xiàn)純粹的語(yǔ)義文本擴(kuò)展搜索沒有提供最佳的相關(guān)性。因此,我們結(jié)合了語(yǔ)義搜索和傳統(tǒng)的 BM25 搜索對(duì)關(guān)鍵短語(yǔ)進(jìn)行過濾,以提供最佳結(jié)果。還有其他技術(shù),如倒數(shù)排序融合可以使用,盡管在這個(gè)用例中它們沒有提供更好的結(jié)果。

提醒一下,這篇博客的所有代碼和內(nèi)容都可以在這里找到。

其他注意事項(xiàng)

我們忽略的一件事是如何以可擴(kuò)展和系統(tǒng)的方式評(píng)估搜索相關(guān)性。 對(duì)于我們的用例,我們有一個(gè)測(cè)試數(shù)據(jù)集、查詢和預(yù)期結(jié)果來定量測(cè)量 “什么是好的”。 我們強(qiáng)烈建議你查看通過數(shù)據(jù)驅(qū)動(dòng)的查詢優(yōu)化提高搜索相關(guān)性,以獲得可靠的方法。

此外,調(diào)整我們的用例的語(yǔ)義搜索相關(guān)性是一個(gè)迭代過程。 對(duì)于許多搜索 COE 來說,快速啟動(dòng)、調(diào)整路線并在需要時(shí)采用不同的技術(shù)是有意義的。 LLMs 是我們工具集中一個(gè)極其靈活的工具,可以為我們的用戶提供更高級(jí)別的搜索體驗(yàn)。

下一個(gè)博客

在本博客的下一部分中,我們將了解如何以優(yōu)化且簡(jiǎn)單的方式向開發(fā)人員公開我們的 Elasticsearch 查詢,使他們能夠快速將搜索功能合并到應(yīng)用程序中。 作為其中的一部分,我們將提供關(guān)鍵字提取的示例,這可以提高搜索性能。

原文:https://www.elastic.co/search-labs/blog/semantic-search-as-service-at-a-search-center-of-excellence文章來源地址http://www.zghlxwxcb.cn/news/detail-848047.html

到了這里,關(guān)于Elasticsearch:語(yǔ)義搜索即服務(wù)處于卓越搜索的中心的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Elasticsearch:如何在 Elastic 中實(shí)現(xiàn)圖片相似度搜索

    Elasticsearch:如何在 Elastic 中實(shí)現(xiàn)圖片相似度搜索

    作者:Radovan Ondas 在本文章,我們將了解如何通過幾個(gè)步驟在 Elastic 中實(shí)施相似圖像搜索。 開始設(shè)置應(yīng)用程序環(huán)境,然后導(dǎo)入 NLP 模型,最后完成為你的圖像集生成嵌入。 Elastic 圖像相似性搜索概覽 Elasticsearch:如何在 Elastic 中實(shí)現(xiàn)圖片相似度搜索 第一步是為你的應(yīng)用程序設(shè)

    2024年01月22日
    瀏覽(30)
  • Elasticsearch:使用 Elasticsearch 進(jìn)行語(yǔ)義搜索

    Elasticsearch:使用 Elasticsearch 進(jìn)行語(yǔ)義搜索

    在數(shù)字時(shí)代,搜索引擎在通過瀏覽互聯(lián)網(wǎng)上的大量可用信息來檢索數(shù)據(jù)方面發(fā)揮著重要作用。 此方法涉及用戶在搜索欄中輸入特定術(shù)語(yǔ)或短語(yǔ),期望搜索引擎返回與這些確切匹配的結(jié)果。 雖然搜索對(duì)于簡(jiǎn)化信息檢索非常有價(jià)值,但它也有其局限性。 主要缺點(diǎn)之

    2024年02月08日
    瀏覽(27)
  • Elasticsearch:多語(yǔ)言語(yǔ)義搜索

    Elasticsearch:多語(yǔ)言語(yǔ)義搜索

    在此示例中,我們將使用多語(yǔ)言嵌入模型 multilingual-e5-base 對(duì)混合語(yǔ)言文檔的 toy 數(shù)據(jù)集執(zhí)行搜索。 使用這個(gè)模型,我們可以通過兩種方式進(jìn)行搜索: 跨語(yǔ)言,例如使用德語(yǔ)查詢來查找英語(yǔ)文檔 在非英語(yǔ)語(yǔ)言中,例如使用德語(yǔ)查詢來查找德語(yǔ)文檔 雖然此示例僅使用密集檢索,

    2024年02月08日
    瀏覽(26)
  • Elasticsearch:使用 Transformers 和 Elasticsearch 進(jìn)行語(yǔ)義搜索

    Elasticsearch:使用 Transformers 和 Elasticsearch 進(jìn)行語(yǔ)義搜索

    什么語(yǔ)義搜索( semantic search )呢?根據(jù)搜索查詢的意圖和上下文含義(而不僅僅是)檢索結(jié)果。語(yǔ)義/向量搜索是一種強(qiáng)大的技術(shù),可以大大提高搜索結(jié)果的準(zhǔn)確性和相關(guān)性。 與傳統(tǒng)的基于的搜索方法不同,語(yǔ)義搜索使用單詞的含義和上下文來理解查詢背后的意

    2024年02月08日
    瀏覽(24)
  • Elasticsearch:使用 ELSER 進(jìn)行語(yǔ)義搜索

    Elasticsearch:使用 ELSER 進(jìn)行語(yǔ)義搜索

    Elastic Learned Sparse EncodeR(或 ELSER)是一種由 Elastic 訓(xùn)練的 NLP 模型,使你能夠使用稀疏向量表示來執(zhí)行語(yǔ)義搜索。 語(yǔ)義搜索不是根據(jù)搜索詞進(jìn)行字面匹配,而是根據(jù)搜索查詢的意圖和上下文含義檢索結(jié)果。 本教程中的說明向你展示了如何使用 ELSER 對(duì)數(shù)據(jù)執(zhí)行語(yǔ)義搜索。 提示

    2024年02月11日
    瀏覽(29)
  • Elasticsearch:使用 ELSER v2 進(jìn)行語(yǔ)義搜索

    Elasticsearch:使用 ELSER v2 進(jìn)行語(yǔ)義搜索

    在我之前的文章 “Elasticsearch:使用 ELSER 進(jìn)行語(yǔ)義搜索”,我們展示了如何使用 ELESR v1 來進(jìn)行語(yǔ)義搜索。在使用 ELSER 之前,我們必須注意的是: 重要 :雖然 ELSER V2 已正式發(fā)布,但 ELSER V1 仍處于 [預(yù)覽] 狀態(tài)。此功能處于技術(shù)預(yù)覽階段,可能會(huì)在未來版本中更改或刪除。 E

    2024年02月22日
    瀏覽(24)
  • Elasticsearch:使用 ELSER 文本擴(kuò)展進(jìn)行語(yǔ)義搜索

    Elasticsearch:使用 ELSER 文本擴(kuò)展進(jìn)行語(yǔ)義搜索

    在今天的文章里,我來詳細(xì)地介紹如何使用 ELSER??進(jìn)行文本擴(kuò)展驅(qū)動(dòng)的語(yǔ)義搜索。 如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,請(qǐng)參考如下的鏈接來進(jìn)行安裝: 如何在 Linux,MacOS 及 Windows 上進(jìn)行安裝 Elasticsearch Kibana:如何在 Linux,MacOS 及 Windows 上安裝 Elastic 棧中的 Kiba

    2024年02月07日
    瀏覽(25)
  • 使用 Elasticsearch、OpenAI 和 LangChain 進(jìn)行語(yǔ)義搜索

    使用 Elasticsearch、OpenAI 和 LangChain 進(jìn)行語(yǔ)義搜索

    在本教程中,我將引導(dǎo)您使用 Elasticsearch、OpenAI、LangChain 和 FastAPI 構(gòu)建語(yǔ)義搜索服務(wù)。 LangChain 是這個(gè)領(lǐng)域的新酷孩子。 它是一個(gè)旨在幫助你與大型語(yǔ)言模型 (LLM) 交互的庫(kù)。 LangChain 簡(jiǎn)化了與 LLMs 相關(guān)的許多日常任務(wù),例如從文檔中提取文本或在向量數(shù)據(jù)庫(kù)中對(duì)它們建立索引

    2024年02月08日
    瀏覽(21)
  • Elasticsearch:語(yǔ)義搜索 - Semantic Search in python

    Elasticsearch:語(yǔ)義搜索 - Semantic Search in python

    當(dāng) OpenAI 于 2022 年 11 月發(fā)布 ChatGPT 時(shí),引發(fā)了人們對(duì)人工智能和機(jī)器學(xué)習(xí)的新一波興趣。 盡管必要的技術(shù)創(chuàng)新已經(jīng)出現(xiàn)了近十年,而且基本原理的歷史甚至更早,但這種巨大的轉(zhuǎn)變引發(fā)了各種發(fā)展的“寒武紀(jì)大爆炸”,特別是在大型語(yǔ)言模型和生成 transfors 領(lǐng)域。 一些懷疑論

    2024年02月14日
    瀏覽(23)
  • Elasticsearch:語(yǔ)義搜索、知識(shí)圖和向量數(shù)據(jù)庫(kù)概述

    Elasticsearch:語(yǔ)義搜索、知識(shí)圖和向量數(shù)據(jù)庫(kù)概述

    結(jié)合對(duì)你自己的私有數(shù)據(jù)執(zhí)行語(yǔ)義搜索的概述 語(yǔ)義搜索是一種使用自然語(yǔ)言處理算法來理解單詞和短語(yǔ)的含義和上下文以提供更準(zhǔn)確的搜索結(jié)果的搜索技術(shù)。 這種方法基于這樣的想法:搜索引擎不僅應(yīng)該匹配查詢中的,還應(yīng)該嘗試?yán)斫庥脩羲阉鞯囊鈭D以及所使用的單

    2024年02月16日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包