$30 off During Our Annual Pro Sale. View Details »

elasticsearch_semantic_search.pdf

樋口慎
April 25, 2023
130

 elasticsearch_semantic_search.pdf

樋口慎

April 25, 2023
Tweet

Transcript

  1. Copyright © Acroquest Technology Co., Ltd. All rights reserved.
    第53回Elasticsearch勉強会
    Elasticsearch8.7 におけるセマンティック検索
    Acroquest Technology 株式会社
    Elastic Certified Engineer
    樋口 慎 @shin0higuchi
    1

    View Slide

  2. 自己紹介
    ⚫ 名前:樋口 慎
    ⚫ 所属:Acroquest Technology株式会社
    ⚫ 業務:Elasticコンサルティング全般、データ分析、システム開発
    ⚫ 資格/執筆:
    世界初「Elastic Certification」3種取得
    Azure Solutions Architect
    Elasticsearch NEXT STEP 執筆

    View Slide

  3. はじめに
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
    当発表では、下記のブログ記事で紹介している
    Elasticsearch8.7におけるセマンティック検索について説明します。
    セマンティック検索の活用で、Elasticsearchの検索が根本的に変わる!? -
    Taste of Tech Topics (hatenablog.com)

    View Slide

  4. セマンティック検索とは?
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
    ■Elasticsearchの通常の検索
    検索クエリを
    形態素解析
    AWS上でElasticsearchを使うには?
    AWS/上/で/Elasticsearch/
    を/使う/に/は/?
    検索対象ドキュメント群
    検索
    「AWS」「Elasticsearch」
    といったキーワードを含むド
    キュメントのみがヒットする
    ■セマンティック検索
    機械学習モデルで
    ベクトル化(embedding)
    AWS上でElasticsearchを使うには?
    [8,64,12,96,12,....]
    検索対象ドキュメント群
    検索
    意味的に近い
    ドキュメントがヒットする
    ※検索ドキュメント群が事前に
    ベクトル化されている必要がある

    View Slide

  5. Elasticsearchで学習済みモデルを利用するには
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
    Kibana
    Elasticsearch
    学習済みモデル

    Elandを利用して、
    学習済みモデルを
    Elasticsearchに登録する

    学習済みモデルを用意する
    (Hugging Face等を利用す
    る場合、適切なモデルを選
    ぶのみ)

    ドキュメント登録時/検
    索時に登録済みモデルを
    呼び出して利用する
    (ベクトル化)

    View Slide

  6. Eland による import
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
    • Elandは、HuggingFaceのモデルをデプロイする簡易なスクリプトを提供
    eland_import_hub_model --url https://localhost:9200 \
    -u -p \
    --ca-certs xxxx \
    --hub-model-id \
    --task-type <タスク種別> \
    モデルをローカルのElasticsearchにデプロイするコマンド

    View Slide

  7. Eland による import
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7
    • Elandは、HuggingFaceのモデルをデプロイする簡易なスクリプトを提供
    eland_import_hub_model --url https://localhost:9200 \
    -u -p \
    --ca-certs xxxx \
    --hub-model-id cl-tohoku/bert-base-japanese-v2 \
    --task-type text_embedding \
    モデルをローカルのElasticsearchにデプロイするコマンド

    View Slide

  8. 取り込んだモデルはKibanaから確認可能
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8

    View Slide

  9. 登録するドキュメントのEmbedding
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
    • ingest pipeline で inference processorを利用する
    "inference": {
    "target_field": "inference.content",
    "model_id": "cl-tohoku__bert-base-japanese-v2",
    "inference_config": {
    "text_embedding": {}
    },
    "field_map": {
    "content": "text_field"
    }
    }

    View Slide

  10. 登録するドキュメントのEmbedding
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10
    • ドキュメント登録時にパイプライン名を指定する
    POST blogs/_bulk?pipeline=text_embedding
    {"index":{}}
    {"title": "XXXX", "content": "XXXX"}
    {"index":{}}
    {"title": "XXXX", "content": "XXXX"}
    ...
    contentフィールドをembeddingした結果が
    inference.content配下に保存される

    View Slide

  11. 検索時のクエリ
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
    • search APIのknnパラメータを指定する。
    GET blogs/_search
    {
    "query": {...},
    "knn": [
    {
    "field": "vector.content", #ベクトルを入れたフィールド名
    "k": 3, #上位3件の結果を取得
    "num_candidates": "100", #類似度を計算する対象数
    "query_vector_builder": {
    "text_embedding": {
    "model_id": "cl-tohoku__bert-base-japanese-v2",
    "model_text": "<検索したい文字列>"
    }
    }
    }
    ]
    }

    View Slide

  12. デモ
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12
    • 例として、技術ブログの記事を検索する
    • 通常の検索と組み合わせてセマンティック検索を用いることでランキングを改善す
    る。

    View Slide

  13. まとめ
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
    • Elasticsearch8.7からは、
    ドキュメント登録時だけでなく、検索時にもembeddingできるようになった
    →結果、セマンティック検索がElasticsearchのみで完結するようになった。
    • GPT4などをはじめとする大規模言語モデルも登場するなか、
    より大きなモデル/多次元のベクトルへの対応および性能面が今後の注目ポイ
    ントと考えられる。

    View Slide

  14. ご清聴ありがとうございました。
    Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14

    View Slide