Elasticsearch、ESRE、LLM、LangChain による製薬業界の研究開発の加速 - パート 1

著者:ヴァレリオ・アルヴィッツィーニョディミトリ・マルクスフランチェスコ・ディ・ステファノ

これは、生成 AI/LLM、カスタム モデル、Elasticsearch Relevance Engine (ESRE​​) を通じて、製薬業界における医薬品のイノベーションと発見の迅速化をサポートするための包括的なガイドです。有望な薬剤候補を生み出す迅速な創薬は、製薬業界の主要な目標です。この目標をサポートするために、業界は公開データと独自データを迅速かつ安全に活用するためのより良い方法を見つける必要があります。

新しいニュース速報をより早く見つける - メディアの声

 

WIPOによると、研究開発特許分析は研究者やイノベーターに次のような効果をもたらします。

  • 研究開発作業の重複を避ける
  • 発明の特許性を判断する
  • 他の発明者の特許を侵害しないようにする
  • 自分または他の発明者の特許の価値を見積もる
  • 一度も付与されなかった特許出願、一部の国で無効になった特許、または有効でなくなった特許の技術を利用する
  • イノベーション活動と競合他社の将来の方向性に関する情報を得る
  • ライセンス、技術提携、合併・買収などのビジネス上の意思決定計画を改善する
  • 健康や環境に関連するものなど、公共の関心のある特定の技術分野における主要な傾向を特定し、政策計画の基礎を提供する

生成人工知能 (GAI) の出現により、この目標を達成する可能性はかつてないほど近づいています。ただし、課題もあります。その 1 つは、企業のプライベートな専有データを GAI の機能に組み込む方法です。

Elasticsearch Relevance Engine™ (ESRE​​™)と生成 AI 質問応答機能を組み合わせると、研究開発チームが強力なソリューションを開発できるようになります。ESRE は、AI ベースの検索アプリケーションを強化するように設計されています。これは、すぐに使用できる優れた関連性を持つセマンティック検索の適用 (ドメインの適応は必要ありません)、ベクトル検索の実行、外部の大規模言語モデル (LLM) との統合、ハイブリッド検索の実装、およびサードパーティまたは独自のトランスフォーマー モデルの使用に使用されます。

このブログでは、ESRE と GAI を使用して、研究開発組織が効率的にデータを操作し、創薬プロセスにおいてより適切な意思決定を行えるようにする方法を学びます。プライバシーとコンテキストの欠如という課題に対処します。

私たちのブログ投稿は製薬業界を対象としていますが、ここで説明した方法は研究開発に携わるあらゆる組織に有効です。

状況に応じた課題

知的財産とイノベーションの分野では、研究者、専門家、アナリストはいくつかの大きな課題に直面しています。それらのいくつかを見てみましょう。

断片化された情報の状況

特許および関連分野に関連するデータは複数のソースに分散されており、それぞれが独自の構造、形式、アクセス方法を持っています。特許自体は多くの場合、さまざまな国内および国際特許庁によって公開されているため、分析のために包括的なデータセットを収集するのは面倒です。さらに、先行技術、特許訴訟、科学文献に関連する情報は、さまざまなデータベース、出版物、リポジトリで見つけることができます。集中化および標準化されたシステムが欠如していると、データの検出、収集、統合が非効率になる可能性があります。

難読化の力

発明者の中には、特許文書内の発明を難読化するために戦略的なアプローチを採用する場合があります。あいまいな言葉、複雑な表現、意図的なあいまいさを使用すると、創作物の内部構造や技術的な詳細が曖昧になる可能性があります。この意図的な暗闇はさまざまな目的に役立ちます。まず、競合他社が特許の説明のみに基づいて発明を簡単に模倣することを防ぎます。第二に、発明者は、自分たちの主張をさまざまな背景や新たな技術に適応させる柔軟性を得ることができます。最後に、不確実性の要素が導入され、潜在的な侵害者にとって複雑さが増し、訴訟が成功する可能性が高まります。

幻覚と一般的な背景

GAI が直面している課題の 1 つは、幻覚現象です。幻覚とは、特に領域固有の質問をされた場合に、AI モデルが自信に満ちているように聞こえるが間違っている出力を生成することです。

幻覚について理解するための重要なポイントは次のとおりです。

文脈上の理解が限られている

LLM (大規模言語モデル) のような AI モデルは、さまざまなソースからの大量のデータに基づいてトレーニングされますが、ヘルスケアや製薬などの特定の領域に関する包括的な知識や理解をまだ欠いている可能性があります。ドメイン固有の問題や複雑なシナリオに直面した場合、モデルは、実際には不正確または誤解を招く、もっともらしく聞こえる応答を提供する可能性があります。

トレーニングデータへの依存性

トレーニング データの品質と多様性は、AI モデルのパフォーマンスに重要な役割を果たします。トレーニング データが関連するすべての側面を適切にカバーしていない場合、またはバイアスが含まれている場合、モデルはトレーニング データに存在するパターンと一致しているものの、現実を正確に反映していないという錯覚を引き起こす可能性があります。

反応に対する自信過剰

LLM を含む AI モデルは、不確実な場合や、質問が知識の範囲を超えている場合でも、自信を持って回答する傾向があることが示されています。この過信により、特にモデルの限界を認識していない場合、誤解を招く情報や不正確な情報をユーザーに提供してしまう可能性があります。

解決策を求める


データソースの統合

Elastic® は柔軟なデータ取り込みオプションを提供し、研究開発チームがさまざまなソースからシームレスにデータを取り込めるようにします。JSON や CSV などの構造化データ形式だけでなく、テキスト ドキュメント、画像埋め込み (密ベクトル)、オーディオ ファイルなどの非構造化データもサポートしています。Bulk API、エージェント、Logstash® などの Elastic の豊富な取り込み API により、効率的かつ自動化されたデータ取り込みプロセスが可能になります。

上記の柔軟なデータ取り込みオプションに加えて、Elastic は Web クローリングを通じて Web サイト データを統合するための強力な機能も提供します。Web クローラーの助けを借りて、研究開発チームは Web サイトからデータを自動的に抽出して取り込むことができ、分析できる情報ソースの範囲が広がります。Web クローラーの優れた例については、このブログ投稿を参照してください。

状況の可視化

Kibana® は、特許データセットを視覚的に魅力的でインタラクティブな洞察に変換します。直感的なインターフェイスと多様な視覚化オプションにより、研究者は特許の傾向、パターン、関係を簡単に探索および分析できます。Kibana を使用すると、動的なチャートやマップから強力なフィルタリング機能まで、研究者が貴重な知識を抽出し、主要なプレーヤーを特定し、データに基づいた意思決定を行うことができます。そのコラボレーション機能により、洞察のシームレスな共有とディスカッションが可能になり、部門間のコラボレーションが促進され、研究成果が加速されます。

Kibana の特許分析ダッシュボード

 

 

新しい側面の難読化を解除する

Elasticsearch の重要なテキストの集約は、一連のドキュメントまたは特定のフィールド内の重要な用語を識別できる強力な機能です。統計的に重要な用語を強調表示し、一般的な用語や背景用語と区別することで、有意義な洞察を発見するのに役立ちます。

大幅なテキスト集約は、データセット内の各用語の用語頻度を、バックグラウンド コーパスに基づいて予想される頻度と比較することによって機能します。バックグラウンド コーパスは通常、どの用語が一般的でどの用語が重要であるかを判断するための参照として使用される、文書の大規模なコレクションまたは代表的なサンプルです。

以下は特許データセットの例です。クエリは次のようになります。

GET patent-publications-1/_search
{
  "size" : 0,
  "query": {
    "match": {
      "abstract_localized.text": {
        "query": "covid"
      }
    }
  },
  "aggs": {
    "hidden_terms": {
      "significant_text": {
        "field": "claims_localized_html.text"
      }
    }
  }
}

回答により、特許で使用されている一連の「隠された」用語が明らかになりました。

"aggregations": {
    "hidden_terms": {
      "doc_count": 218,
      "bg_count": 14899225,
      "buckets": [
        {
          "key": "covid",
          "doc_count": 32,
          "score": 3776.7204780742363,
          "bg_count": 85
        },
        {
          "key": "remdesivir",
          "doc_count": 3,
          "score": 564.3033204275735,
          "bg_count": 5
        },
        {
          "key": "coronavirus",
          "doc_count": 7,
          "score": 150.57538997839688,
          "bg_count": 102
        },
        {
          "key": "cov",
          "doc_count": 6,
          "score": 142.83756108838813,
          "bg_count": 79
        },
        {
          "key": "sars",
          "doc_count": 7,
          "score": 137.1282917578487,
          "bg_count": 112
        }
      ]
    }
}

これらの用語を使用すると、研究者は調査を洗練させることができます。

さらに、この強力な機能を LLM と統合する方法を示します。

プライベート データと汎用 LLM の間の橋渡し

研究者の親友: PatChat

先行技術の検索やその他の機能については、当社のデモ アプリケーションである PatChat は、研究者が特許、科学文献、臨床研究、訴訟、専有情報とどのようにやり取りできるかを示しています。デモのアプローチは、同社が錯覚と一般的な状況に関する上記の課題にどのように対処できるかを示しています。ESRE 機能に裏打ちされた Elastic は、非常にエレガントな方法でこれを橋渡しします。

このアプリケーションは、GAI を使用して複雑な情報環境を探索する直感的かつ効率的な方法を示します。研究者は、特定の質問をし、リアルタイムでコンテキストを認識した洞察を受け取り、データを簡単にナビゲートできます。アプリのユーザーフレンドリーなインターフェイス、インタラクティブな視覚化、ドメインのカスタマイズにより、研究の生産性が向上し、発見が促進され、分野全体でイノベーションが促進されます。PatChat を使用して、異なる情報ソースから貴重な知識を抽出する革新的なアプローチを体験してください。

警告メモ: このアプリケーションは簡単に終了するものであると考えてください。これまで実稼働環境での使用は行われていません。

PatChat アプリケーションのクエリ結果のサンプル

 

ベクトル検索

まず基本的なことについて話しましょう。LLM にクエリを実行する前に、ベクトル検索とカスタム モデルを利用して Elasticsearch サービスからコンテキストを取得します。以下は、_search API 呼び出しで使用されるクエリの例です。

まず、特定のフィールドを検索、フィルタリング、さらには集計するための従来のクエリを構築します。

query = {
  "bool": {
    "must": [
      {
        "match": {
          "abstract_localized.text": {
            "query": query_text,
            "boost": 1
          }
        }
      }
    ],
    "filter": [
      {
        "exists": {
          "field": "abstract-vector.predicted_value"
        }
      }
    ]
  }
}

次に、モデルに基づいて KNN クエリを定義します。

knn = {
  "field": "abstract-vector.predicted_value",
  "k": 3,
  "num_candidates": 20,
  "query_vector_builder": {
    "text_embedding": {
      "model_id": "sentence-transformers__all-distilroberta-v1",
      "model_text": query_text
    }
  },
  "boost": 24
}

重要な要素とその意味は次のとおりです。

1) query : これは、match 句を使用して、指定された query_text の abstract_localized.text フィールドを検索するブール クエリです。その値は 1 に引き上げられ、その重要性を示します。フィルター句により、abstract-vector.predicted_value フィールドが存在するドキュメントのみが考慮されるようになります。

2) knn : これは、ベクトル類似性検索のための K 最近傍 (KNN) クエリです。検索対象のベクトル フィールドとしてフィールド abstract-vector.predicted_value を指定します。パラメータ k と num_candidates は、それぞれ最近傍の数と考慮される候補の数を決定します。前の段階で Elastic によって取り込まれたすべての特許データは、Transformer モデルによって処理され、ベクトル表現が強化されます。

マッピングでは、フィールド ベクトルは dense_vectorとして定義されます。

"vector": {
  "type": "dense_vector",
  "dims": 768,
  "index": true,
  "similarity": "cosine"
}

3) query_vector_builder : この部分は、ユーザーのクエリに対する動的テキスト埋め込みを作成することを目的としています。その後、保存されたデータ ベクトルと比較して、意味的な一致を見つけます。推論に使用されるモデルとクエリ ベクトルを構築するためのテキストを指定します。この例では、ID が文章-transformers__all-distilroberta-v1のモデルを使用し、ユーザープロンプトのクエリを model_text 入力として渡します。

4) boost : このパラメータは、KNN クエリにブースト値 24 を割り当て、ドキュメントの全体的な関連性スコアにおけるその重要性を示します。

次に、2 つのクエリ (match クエリと knn クエリ) を結び付ける必要があります。

resp = es.search(
    index=index,
    query=query,
    knn=knn,
    fields=fields,
    size=1,
    source=False
)

これはすべて素晴らしいことですが、これを簡素化し、LLM との一連の複数の対話を可能にするにはどうすればよいでしょうか?

チェーン内のチェーン: LangChain

LangChain の概要と具体的な SequentialChain の概念については、このドキュメントを参照してください。

LangChain Web サイトからの簡単な概要は次のとおりです。

LangChain は、言語モデルを利用してアプリケーションを開発するためのフレームワークです。次のアプリケーションをサポートしています。

  • データ認識: 言語モデルを他のデータ ソースに接続する
  • エージェントティック: 言語モデルがその環境と対話できるようにします。

世界知的所有権機関によると、現在、先行技術調査を実施するための戦略がいくつかあります。このブログ投稿の目的として、次の戦略のいくつかの手順と、ESRE と LangChain を介してそれらがどのように実装されるかを確認します。

  • イノベーションに関連する概念を特定する
  • キーワードを決める
  • IPC シンボルを決定する
  • […]

1. チェーンを定義してイノベーションの主要な概念を特定する

この機能は、特許関連のコンテキストで重要な概念を特定するように促します。これには、コンテキストに関する質問をするためのテンプレートが含まれており、入力として言語モデル (LLM) が必要です。この関数は、コンテキストに基づいて特許の重要な概念を特定することに関連する応答を生成するために使用される LLMChain オブジェクトを返します。

def step_1_identify_key_concepts_chain():
key_concepts_question = """
You are a scientist or patent layer.
It is your job to find prior art in patents.
The following context describes patents consisting of title, abstract, publication number and some other information: {context}
Identify the key concepts of the patent.
When providing an answer, put the publication number followed by the title first.
Ignore any citation publication numbers.
When asked: {question}
Your answer to the questions using only information in the context is: """
key_concepts_prompt = 
	PromptTemplate(template=key_concepts_question, input_variables=["context", "question"])
return LLMChain(prompt=key_concepts_prompt, llm=llm,
	output_key="key_concepts")

2. 特許内のキーワードを決定するためのチェーンを定義します (クエリ生成用)

この機能は、特許の指定された主要な概念に基づいて、さらに先行技術を調査するためのキーワードを生成するように促します。入力として言語モデル (LLM) が必要です。この関数は、提供された主要な概念に基づいて特許調査キーワードの特定に関連する応答を生成するために使用される LLMChain オブジェクトを返します。

def step_2_identify_keywords_chain():
keywords_question = """
Given the key concepts of a patent, generate keywords for further prior art research.
Use synonyms and related keywords based on your knowledge.
Here are the identified key concepts: {key_concepts}
    	"""
keywords_prompt = PromptTemplate(input_variables =
		['key_concepts'], template=keywords_question)
return LLMChain(prompt=keywords_prompt, llm=llm, 
		output_key="keywords")

ここで、Elasticsearch のベクトル検索機能を使用して、質問に基づいて類似のドキュメントをクエリし、それらを順次チェーンに入力してみましょう。

def ask_question(question):
similar_docs = es_db.similarity_search(question)

context= similar_docs[0].page_content
return chain({"question": question, "context": context})

応答として、次のようなものが表示されるはずです。

{"key_concepts": "\n       The information processing method includes receiving a selection of a garment from a user, calculating a price of the garment on the basis of a type of the selected garment and parameters relating to a design and materials set for the garment, causing a display part to display the calculated price, and changing the parameters in conjunction with an input from the user. The display controlling includes causing the display part to display the price that reflects the changed parameters in response to the change of the parameters. The information processing method further includes generating an appearance image of the garment on the basis of the parameters, wherein the display controlling includes causing the display part to display the appearance image that reflects the changed parameters in response to an input from the user. Additionally, the price calculating includes calculating a price of the garment further on the basis of a parameter relating to a manufacturing process set for the garment.", "keywords": "\nKeywords:\nInformation processing, garment selection, price calculation, parameters, design, materials, display part, input, appearance image, manufacturing process."}

3. IPC シンボルを決定する

念のため、キーワード (文脈に応じて、または重要なテキストの集約、またはその両方によって生成された LLM) を使用して特許をフィルタリングし、関連する IPC シンボルを特定します。これにはさまざまな方法があります。非常に魅力的なアプローチの 1 つは、このスクリーンショットに示すように、Kibana のデータを視覚化する機能を使用することです。

Kibana では、データセットのクエリに次の用語を使用します。

"information processing" or "garment selection" or "price calculation" or  "display part" or "appearance image" or "manufacturing process"

ゲーミフィケーションシフト

好奇心旺盛な研究者が PatChat アプリから洞察を求めるとき、イノベーションについて質問することで、楽しい驚きを得ることができます。いたずらっぽい笑みを浮かべながら、PatChat はデジタルのシェイクスピアの詩人に変身し、ロミオとジュリエット風の答えで研究者を魅了します。それぞれの応答は、学術的知識と吟遊詩人自身の詩的天才の気まぐれな融合です。弱強五歩格から詩的な比喩まで、研究者は学術と演劇が絡み合う世界に引き込まれます。これは、知識の探求にユーモアと創造性を加えた魅力的なひねりであり、驚きと喜びをもたらす PatChat の能力を示しています。勇気のある方は、シェイクスピアの革新性についてお気軽に PatChat に質問してください。

パッチット

 

研究者が特許関連の情報を求めているときに、従来の対応ではなく、PatChat で隠れたコメディアンを解き放つことにしたと想像してください。仮想の目を輝かせて、PatChat はスタンドアップ コメディアンに変身し、特許関連の冗談で研究者を驚かせる準備ができています。PatChat では、ジョークやダジャレを特許に関する議論に巧みに組み込んでおり、それぞれの回答はウィット、ダジャレ、コメディのタイミングが楽しく融合したものになっています。

スタートレックのファンやクリンゴンの文化と言語のファンに対して、PatChat は次のように答えます。

 

入門

PatChat は、独自の特許発見ソリューションを構築するための基盤です。自由にコードを試し、新しい機能を組み込み、特定の要件に合わせてアプリケーションをカスタマイズしてください。あなたの創造性を解き放ち、会話型特許探索の無限の可能性を切り開いてください。

1. Elastic Cloud デプロイメントを作成する

このブログ投稿で説明されている手順に従って、クラウド内に復元力のある展開を作成します。

2. モデルを Elasticsearch にロードします

Elasticsearch は、サードパーティが作成したモデルを受け入れてデータに適用することができます。特許の使用例では、完全なdistilarbertaモデルを活用します。モデルをロードするには、Python クライアントElandが使用されます。顧客モデルを Elasticsearch にロードする Python スクリプトは次のとおりです。

from pathlib import Path
from eland.ml.pytorch import PyTorchModel
from eland.ml.pytorch.transformers import TransformerModel
from elasticsearch import Elasticsearch
from elasticsearch.client import MlClient
import os
import time
import requests
import shutil

# Run pip -q install eland elasticsearch sentence_transformers transformers torch==2.0.1

es_cloud_id = os.environ.get("ELASTICSEARCH_CLOUD_ID")
es_user = os.environ.get("ELASTICSEARCH_USERNAME") 
es_pass = os.environ.get("ELASTICSEARCH_PASSWORD")
kibana_endpoint = os.environ.get("KIBANA_ENDPOINT") 

es = Elasticsearch(cloud_id=es_cloud_id, basic_auth=(es_user, es_pass), timeout=180)

# Set the model name from Hugging Face and task type
# hf_model_id = 'anferico/bert-for-patents'
hf_model_id = 'sentence-transformers/all-distilroberta-v1'
tm = TransformerModel(hf_model_id, "text_embedding")

# Set the model ID as it is named in Elasticsearch
es_model_id = tm.elasticsearch_model_id()

# Download the model from Hugging Face
tmp_path = "../tmp/models"
Path(tmp_path).mkdir(parents=True, exist_ok=True)
model_path, config, vocab_path = tm.save(tmp_path)

# Load the model into Elasticsearch
ptm = PyTorchModel(es, es_model_id)
ptm.import_model(model_path=model_path, config_path=None, vocab_path=vocab_path, config=config) 

# Start the model
while not MlClient.start_trained_model_deployment(es, model_id=es_model_id):
    time.sleep(5)

# Synchronize the saved object (ML model) in Kibana to make it usable
api_endpoint = f"{kibana_endpoint}/api/ml/saved_objects/sync"
auth = (es_user, es_pass)
requests.get(api_endpoint, auth=auth)

# Cleanup
shutil.rmtree(tmp_path)

3. 推論パイプラインの作成

Kibana の開発コンソールで次のコマンドを発行します。

PUT _ingest/pipeline/patents-embeddings-inference-pipeline
{
 "description": "Text embedding pipeline",
 "processors": [
   {
     "inference": {
       "model_id": "sentence-transformers__all-distilroberta-v1",
       "target_field": "text_embedding",
       "field_map": {
         "text": "text_field"
       }
     }
   },
   {
     "set":{
       "field": "vector",
       "copy_from": "text_embedding.predicted_value"
     }
   },
   {
     "remove": {
       "field": "text_embedding"
     }
   }
 ],
 "on_failure": [
   {
     "set": {
       "description": "Index document to 'failed-<index>'",
       "field": "_index",
       "value": "failed-{
   
   {
   
   {_index}}}"
     }
   },
   {
     "set": {
       "description": "Set error message",
       "field": "ingest.failure",
       "value": "{
   
   {_ingest.on_failure_message}}"
     }
   }
 ]
}

4. インデックステンプレートを作成する

わかりやすくするために、簡略化されたスキーマを使用します。ブログ投稿の後半では、特許の実際のパターンについて説明します。

PUT _index_template/patents-embeddings-index-template
{
  "index_patterns": ["patents-embeddings-*"],
  "template": {
    "settings": {
      "index": {
        "refresh_interval": "5s",
        "number_of_replicas": 1,
        "number_of_shards": 5,
        "default_pipeline": "patents-embeddings-inference-pipeline"
      }    
    },
    "mappings": {
      "properties": {
        "vector": {
            "type": "dense_vector",
              "index": true,
              "dims": 768,
              "similarity": "cosine"
        },
        "text": {
          "type": "text"
        },
        "metadata": {
          "type": "object"
        }
      }
    }
  }
}

default_pipeline キーを使用して、このインデックス テンプレートに一致する新しいドキュメントのインデックスを作成するときに前処理に使用する取り込みパイプラインを指定します。特許埋め込み推論パイプラインは、選択したトランスフォーマー モデルを通じて推論を実行し、ベクトルでドキュメントを強化します。

5. テストドキュメントを作成する

POST patents-embeddings-1/_doc
{
  "text": """Patent title: Support brace accommodating a medical device
  
  Patent publication number: US-2019308028-A1
  
  Patent claims:What is claimed is: 
     
         1 . A support brace for a body part of a user comprising:
 one or stretchable sections configured to accommodate the body part; and   one or more attachment devices, each configured to receive a pain relief or rehabilitation assistance device.   
     
         2 . The support brace of  claim 1  wherein:
 the support brace is in the form of a sleeve. 
     
         3 . The support brace of  claim 2  wherein:
 the body part is the knee; and 
 the sleeve is configured to surround the knee of the user. 
     
         4 . The support brace of  claim 1  wherein:
 each of the one or more attachment devices is a pocket; and 
 each pocket is sewn to an interior surface of the support brace.     
     
         5 . The support brace of  claim 4  wherein:
 the pain relief or rehabilitation assistance device is an electromagnetic pulse therapy device. 
     
         6 . The support brace of  claim 5  wherein:
 each of the pockets are sewn such that the top to bottom is in the weft direction.      
     
         7 . The support brace of  claim 5  wherein:
 each of the pockets are sewn such that the top to bottom is in the warp direction.
     
         8 . The support brace of  claim 5  further comprising:
 a slit located in each of the pockets sized to receive the electromagnetic pulse therapy device.  
     
         9 . The support brace of  claim 8  wherein:
 the one or more attachment devices comprises at least four pockets; 
 each of the at least four pockets extend along the support brace in a linear fashion; and 
 each of the at least four pockets are positioned to align with one or more areas of common injury or pain for the body part. 
     
         10 . The support brace of  claim 1  further comprising:
 one or more devices for securing the support brace to the body part. 
     
         11 . The support brace of  claim 11  wherein:
 each of the one or more devices for securing the support brace to the body part are stretchable bands. 
      
         12 . A support brace for a body part of a user comprising:
 one or stretchable sections configured to accommodate the body part;   multiple pockets sewn to an interior surface of the support brace; and   a series of slits, each slit being located in one of the multiple pockets;   wherein each pocket is configured to receive an electromagnetic pulse therapy device.   
     
         13 . The support brace of  claim 12  wherein:
 the stretchable sections are comprised of a four-way stretch material. 
      
         14 . The support brace of  claim 12  wherein:
 the multiple pockets comprise at least three pockets; 
 each of the at least three pockets extend along the interior surface in a linear fashion; and 
 each of the at least three pockets are positioned to align with one or more areas of common injury or pain for the body part. 
     
         15 . The support brace of  claim 14  wherein:
 the body part is the knee; and 
 the pockets are positioned to be aligned with the anterior cruciate ligament (ACL). 
     
         16 . The support brace of  claim 14  wherein:
 the body part is the knee; and 
 the pockets are positioned to be aligned with the posterior cruciate ligament (PCL). 
     
         17 . The support brace of  claim 14  wherein:
 the body part is the knee; and 
 the pockets are positioned to be aligned with the medial collateral ligament (MLC). 
      
         18 . The support brace of  claim 14  wherein:
 the body part is the knee; and 
 the pockets are positioned to be aligned with the lateral collateral ligament (LCL).  
     
         19 . The support brace of  claim 14  wherein:
 the body part is the knee; and 
 the pockets are positioned to be aligned with the lateral meniscus or the medial meniscus. 
     
         20 . The support brace for a knee of a user comprising:
 a sleeve comprising:
 one or stretchable sections configured to accommodate the knee of the user, wherein each of the stretchable sections are comprised of a four-way stretch material; 
 an upper stretchable band configured to be secured to the upper leg; and 
 a lower stretchable band configured to be secured to the lower leg; 
   a series of pockets sewn along an interior surface of the sleeve in a substantially linear fashion, wherein each of the series of pockets is configured to receive an electromagnetic pulse therapy device; and   a slit located in each of the pockets, wherein the slit is configured to permit the electromagnetic pulse therapy device to be inserted into the pocket.""",
  "metadata": {
    "a": "b"
  }
}

6. 検証テストのドキュメント

GET patents-embeddings-1/_search

これに応じて、計算されたベクトルを含むインデックス付きドキュメントが表示されるはずです。

"hits": [
      {
        "_index": "patents-embeddings-1",
        "_id": "cwbTJ4kBBgs5oH35bQx1",
        "_score": 1,
        "_source": {
          "metadata": {
            "a": "b"
          },
          "vector": [
            -0.0031025379430502653,
            -0.019980276003479958,
            -0.001701259519904852,
            -0.02280360274016857,
            -0.06336194276809692,
            -0.040410757064819336,
            -0.029582839459180832,
            0.07966472208499908,
            0.056912459433078766,
            -0.06189639866352081,
            -0.060898181051015854,
            -0.0719321221113205,
[...]

7.PatChatアプリケーションを起動します

アプリケーションを起動する前に、次の環境変数を設定することを忘れないでください。デモ アプリケーションでは、例として OpenAI を使用します。他の LLM サービスも使用できます。適宜コードを変更してください。

export ELASTICSEARCH_CLOUD_ID=[YOUR_CLOUD_ID]
export ELASTICSEARCH_USERNAME=[YOUR_USER]
export ELASTICSEARCH_PASSWORD=[YOUR_PWD]
export OPENAI_API=[YOUR_OPENAI_ID]

次のように PatChat アプリケーションを起動します。

streamlit run patchat_gpt.py

探検は続く

このブログ投稿で基本要素を設定した後、ストーリーを大規模な環境に構築します。具体的には、BigQuery サービスから 1 億件を超える特許を含む特許データセットのデプロイと抽出を自動化する方法を検討します。さらに、エラスティック クロール機能を使用して他のデータ ソースと統合する方法を検討します。これは、パート 2 で構築するタイプのデプロイメントです。

このブログ投稿で説明した実験に加えて、検討していただきたい資産が他にもあります。たとえば、独自の ElasticDocs GPT エクスペリエンスを構築するには、Elastic トライアル アカウントにサインアップしてから、このサンプル コード リポジトリをチェックアウトして開始します。

関連性を検索するというアイデアを試してみたい場合は、次の 2 つを試してください。

この記事で説明されている機能のリリースとタイミングは、Elastic の独自の裁量にあります。現在利用できない機能は、予定通りに提供されないか、まったく提供されない可能性があります。

このブログ投稿では、それぞれの所有者が所有および運用するサードパーティの生成人工知能ツールを使用している場合があります。Elastic はサードパーティ ツールを管理することができず、そのコンテンツ、操作、または使用について責任を負わず、そのようなツールの使用から生じる可能性のある損失や損害についても責任を負いません。個人情報、機密情報、機密情報を扱う人工知能ツールを使用する場合は注意してください。

あなたが送信したデータは、人工知能のトレーニングやその他の目的に使用される場合があります。あなたが提供する情報が安全であるか機密であるという保証はありません。生成人工知能ツールを使用する前に、そのプライバシー慣行と使用条件をよく理解しておく必要があります。

Elastic、Elasticsearch、および関連マークは、Elasticsearch NV の商標、ロゴ、または登録商標です。米国や他の国でも。その他すべての会社名および製品名は、それぞれの所有者の商標、ロゴ、または登録商標です。

翻訳:類似画像検索の実装方法 | エラスティック エラスティックブログ

おすすめ

転載: blog.csdn.net/UbuntuTouch/article/details/131697884