1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks Vector Searchにおける全文検索のサポート

Posted at

Databricks Vector Searchで、新しいFULL_TEXTクエリタイプを使用して、既存のVector Searchインデックスをクエリできるようになりました!

説明はこちらにあります。

ベータ版
全文検索はベータ機能として利用できます。全文検索を実行するには、パラメーターquery_typeFULL_TEXTに設定します。 全文検索では、ベクター埋め込みを使用せずに、キーワードの一致に基づいて最大 200 件の結果を取得できます。

有効化

プレビューVector Search Full Textをオンにします。
Screenshot 2025-10-22 at 14.43.17.png

ウォークスルー

こちらのサンプルを変更して動作確認していきます。

%pip install --upgrade --force-reinstall databricks-vectorsearch
dbutils.library.restartPython()
from databricks.vector_search.client import VectorSearchClient

vsc = VectorSearchClient()

ダミーの日本語文書データを作成してソースDeltaテーブルに保存

以下では、ソースDeltaテーブルを作成します。

# 使用するカタログとスキーマを指定します。カタログに対するUSE_CATALOG権限、
# スキーマに対するUSE_SCHEMAおよびCREATE_TABLE権限が必要です。
# 必要に応じて、カタログとスキーマを変更してください。

catalog_name = "takaakiyayoi_catalog"
schema_name = "vector_search"
source_table_name = "ja_documents"
source_table_fullname = f"{catalog_name}.{schema_name}.{source_table_name}"
# ダミーの日本語文書データを作成
from pyspark.sql import Row

ja_documents = [
    Row(id="1", title="人工知能の基礎", text="人工知能(AI)は、コンピュータシステムが人間の知能を模倣する技術です。機械学習やディープラーニングなどの技術が含まれます。"),
    Row(id="2", title="機械学習入門", text="機械学習は、データからパターンを学習し、予測や意思決定を行う技術です。教師あり学習、教師なし学習、強化学習などの種類があります。"),
    Row(id="3", title="ディープラーニングとは", text="ディープラーニングは、多層のニューラルネットワークを使用した機械学習の手法です。画像認識、自然言語処理などで高い性能を発揮します。"),
    Row(id="4", title="自然言語処理の応用", text="自然言語処理(NLP)は、人間の言語をコンピュータで処理する技術です。機械翻訳、感情分析、チャットボットなどに応用されています。"),
    Row(id="5", title="コンピュータビジョン", text="コンピュータビジョンは、画像や動画からデータを抽出し、理解する技術です。物体検出、顔認識、医療画像診断などに使われています。"),
    Row(id="6", title="データサイエンスの重要性", text="データサイエンスは、データから洞察を得るための学際的な分野です。統計学、機械学習、ビジネス知識を組み合わせて価値を創出します。"),
    Row(id="7", title="クラウドコンピューティング", text="クラウドコンピューティングは、インターネット経由でコンピューティングリソースを提供するサービスです。スケーラビリティとコスト効率に優れています。"),
    Row(id="8", title="ビッグデータ分析", text="ビッグデータは、従来のツールでは処理が困難な大量のデータセットです。分散処理技術を使用して分析し、ビジネスインサイトを得ることができます。"),
    Row(id="9", title="IoTとスマートデバイス", text="IoT(モノのインターネット)は、物理的なデバイスがインターネットに接続され、データを収集・交換する技術です。スマートホーム、産業自動化などに応用されています。"),
    Row(id="10", title="セキュリティとプライバシー", text="データセキュリティとプライバシー保護は、デジタル時代において極めて重要です。暗号化、アクセス制御、コンプライアンスなどの対策が必要です。")
]

source_df = spark.createDataFrame(ja_documents)
display(source_df)
source_df.write.format("delta").option("delta.enableChangeDataFeed", "true").saveAsTable(source_table_fullname)
display(spark.sql(f"SELECT * FROM {source_table_fullname}"))

Screenshot 2025-10-22 at 15.16.47.png

Vector Searchエンドポイントの作成

vector_search_endpoint_name = "dbdemos_vs_endpoint"

vsc.create_endpoint(
    name=vector_search_endpoint_name,
    endpoint_type="STANDARD" # or "STORAGE_OPTIMIZED"
)
endpoint = vsc.get_endpoint(
  name=vector_search_endpoint_name)
endpoint
endpoint = vsc.get_endpoint(
  name=vector_search_endpoint_name)
endpoint

Vector Indexの作成

事前に日本語対応のエンべディングモデルのサービングエンドポイントを作成しておきます。
Screenshot 2025-10-22 at 15.18.51.png

# Vector index
vs_index = "ja_documents_index"
vs_index_fullname = f"{catalog_name}.{schema_name}.{vs_index}"

embedding_model_endpoint = "taka-embedding"
index = vsc.create_delta_sync_index(
  endpoint_name=vector_search_endpoint_name,
  source_table_name=source_table_fullname,
  index_name=vs_index_fullname,
  pipeline_type='TRIGGERED',
  primary_key="id",
  embedding_source_column="text",
  embedding_model_endpoint_name=embedding_model_endpoint
)
index.describe()

少し待つとインデックスが出来上がります。
Screenshot 2025-10-22 at 15.18.25.png

全文検索(ベータ機能)

全文検索はベータ機能として利用できます。query_typeFULL_TEXTに設定することで、ベクター埋め込みを使用せずに、キーワードの一致に基づいて最大200件の結果を取得できます。

# 全文検索を実行 - query_typeをFULL_TEXTに設定
full_text_results = index.similarity_search(
  query_text="機械学習",
  columns=all_columns,
  query_type="FULL_TEXT",
  num_results=5)

full_text_results

日本語でも動いていますね。

[NOTICE] Using a notebook authentication token. Recommended for development only. For improved performance, please use Service Principal based authentication. To disable this message, pass disable_notice=True.
{'manifest': {'column_count': 4,
  'columns': [{'name': 'id'},
   {'name': 'title'},
   {'name': 'text'},
   {'name': 'score'}]},
 'result': {'row_count': 5,
  'data_array': [['2',
    '機械学習入門',
    '機械学習は、データからパターンを学習し、予測や意思決定を行う技術です。教師あり学習、教師なし学習、強化学習などの種類があります。',
    3.04528],
   ['6',
    'データサイエンスの重要性',
    'データサイエンスは、データから洞察を得るための学際的な分野です。統計学、機械学習、ビジネス知識を組み合わせて価値を創出します。',
    1.6300061],
   ['1',
    '人工知能の基礎',
    '人工知能(AI)は、コンピュータシステムが人間の知能を模倣する技術です。機械学習やディープラーニングなどの技術が含まれます。',
    1.4929942],
   ['3',
    'ディープラーニングとは',
    'ディープラーニングは、多層のニューラルネットワークを使用した機械学習の手法です。画像認識、自然言語処理などで高い性能を発揮します。',
    1.4496725],
   ['4',
    '自然言語処理の応用',
    '自然言語処理(NLP)は、人間の言語をコンピュータで処理する技術です。機械翻訳、感情分析、チャットボットなどに応用されています。',
    0.6211651]]},
 'debug_info': {'response_time': 38.0, 'ann_time': 29.0}}

フィルタと併用します。

# 全文検索でフィルタを使用
full_text_results = index.similarity_search(
  query_text="データ",
  columns=all_columns,
  query_type="FULL_TEXT",
  filters={"id NOT": ("1", "2")},
  num_results=5)

full_text_results

フィルタも効いています。

[NOTICE] Using a notebook authentication token. Recommended for development only. For improved performance, please use Service Principal based authentication. To disable this message, pass disable_notice=True.
{'manifest': {'column_count': 4,
  'columns': [{'name': 'id'},
   {'name': 'title'},
   {'name': 'text'},
   {'name': 'score'}]},
 'result': {'row_count': 3,
  'data_array': [['5',
    'コンピュータビジョン',
    'コンピュータビジョンは、画像や動画からデータを抽出し、理解する技術です。物体検出、顔認識、医療画像診断などに使われています。',
    0.40049824],
   ['6',
    'データサイエンスの重要性',
    'データサイエンスは、データから洞察を得るための学際的な分野です。統計学、機械学習、ビジネス知識を組み合わせて価値を創出します。',
    0.3930394],
   ['9',
    'IoTとスマートデバイス',
    'IoT(モノのインターネット)は、物理的なデバイスがインターネットに接続され、データを収集・交換する技術です。スマートホーム、産業自動化などに応用されています。',
    0.3930394]]},
 'debug_info': {'response_time': 20.0, 'ann_time': 11.0}}

複数キーワードはOR検索されます。

# 複数のキーワードで全文検索
full_text_results = index.similarity_search(
  query_text="セキュリティ プライバシー",
  columns=all_columns,
  query_type="FULL_TEXT",
  num_results=5)

full_text_results
[NOTICE] Using a notebook authentication token. Recommended for development only. For improved performance, please use Service Principal based authentication. To disable this message, pass disable_notice=True.
{'manifest': {'column_count': 4,
  'columns': [{'name': 'id'},
   {'name': 'title'},
   {'name': 'text'},
   {'name': 'score'}]},
 'result': {'row_count': 1,
  'data_array': [['10',
    'セキュリティとプライバシー',
    'データセキュリティとプライバシー保護は、デジタル時代において極めて重要です。暗号化、アクセス制御、コンプライアンスなどの対策が必要です。',
    2.0346112]]},
 'debug_info': {'response_time': 16.0, 'ann_time': 9.0}}
# 複数のキーワードで全文検索
full_text_results = index.similarity_search(
  query_text="データ ビッグ 機械学習",
  columns=all_columns,
  query_type="FULL_TEXT",
  num_results=5)

full_text_results
[NOTICE] Using a notebook authentication token. Recommended for development only. For improved performance, please use Service Principal based authentication. To disable this message, pass disable_notice=True.
{'manifest': {'column_count': 4,
  'columns': [{'name': 'id'},
   {'name': 'title'},
   {'name': 'text'},
   {'name': 'score'}]},
 'result': {'row_count': 5,
  'data_array': [['2',
    '機械学習入門',
    '機械学習は、データからパターンを学習し、予測や意思決定を行う技術です。教師あり学習、教師なし学習、強化学習などの種類があります。',
    3.04528],
   ['6',
    'データサイエンスの重要性',
    'データサイエンスは、データから洞察を得るための学際的な分野です。統計学、機械学習、ビジネス知識を組み合わせて価値を創出します。',
    2.0230455],
   ['1',
    '人工知能の基礎',
    '人工知能(AI)は、コンピュータシステムが人間の知能を模倣する技術です。機械学習やディープラーニングなどの技術が含まれます。',
    1.4929942],
   ['3',
    'ディープラーニングとは',
    'ディープラーニングは、多層のニューラルネットワークを使用した機械学習の手法です。画像認識、自然言語処理などで高い性能を発揮します。',
    1.4496725],
   ['4',
    '自然言語処理の応用',
    '自然言語処理(NLP)は、人間の言語をコンピュータで処理する技術です。機械翻訳、感情分析、チャットボットなどに応用されています。',
    0.6211651]]},
 'debug_info': {'response_time': 134.0, 'ann_time': 125.0}}

純粋なキーワード検索の精度を求めるお客様や、カスタムハイブリッド検索ソリューションを構築する必要があるお客様に最適です。ご活用ください!

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?