LoginSignup
1
0

Databricksのデータを用いたLlamaIndexの活用

Last updated at Posted at 2024-01-17

こちらの続きです。前回は動かしただけですが、今回はDatabricksのUnity Catalogに格納されているドキュメントデータを使ってRAGを動かしてみます。

ドキュメントを見ていたらデータベースからのローダーがあることを知りました。SQLAlchemyが背後で動いているとのこと。

Database Loader

そして、SQLAlchemy経由でDatabricksにアクセスできます。

これらを組み合わせてUnity Catalogのデータを使ってRAGを動かしてみます。

今回使うデータは、こちらで分析した自分のQiitaの記事です。
Screenshot 2024-01-17 at 16.02.25.png
Screenshot 2024-01-17 at 16.02.51.png

takaakiyayoi_catalog.qiita_2023.taka_qiita_2023というテーブルのbodyの列にテキストが入っています。

テーブルにアクセスするクラスターの以下の情報をメモしておきます。

  • サーバーのホスト名
  • HTTPパス

ノートブックでロジックを実装していきます。

ライブラリのインストール。

%pip install -U llama-index
%pip install "databricks-sql-connector[sqlalchemy]"
dbutils.library.restartPython()
from llama_index import download_loader
from llama_index.utilities.sql_wrapper import SQLDatabase

DatabaseReader = download_loader('DatabaseReader')

access_token    = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().getOrElse(None)
server_hostname = "<サーバーのホスト名>"
http_path       = "<HTTPパス>"
catalog         = "takaakiyayoi_catalog"
schema          = "qiita_2023"

reader = DatabaseReader(
    sql_database = SQLDatabase.from_uri(f"databricks://token:{access_token}@{server_hostname}?" +
        f"http_path={http_path}&catalog={catalog}&schema={schema}")
)

テーブルからドキュメントを読み込みます。

query = f"""
SELECT
    body
FROM takaakiyayoi_catalog.qiita_2023.taka_qiita_2023
"""

documents = reader.load_data(query=query)

インデックスを作成します。

import os
os.environ["OPENAI_API_KEY"] = dbutils.secrets.get("demo-token-takaaki.yayoi", "openai_api_key")

from llama_index import VectorStoreIndex, SimpleDirectoryReader

index = VectorStoreIndex.from_documents(documents)

問い合わせます。

query_engine = index.as_query_engine()
response = query_engine.query("どのような記事が書かれていますか?")
print(response)

記事は、Apache Sparkに関する機能説明やチュートリアル、Koalasの紹介、データフレームの操作方法、機械学習のチュートリアルなど、さまざまなトピックに関するものがあります。また、Apache Sparkの新機能やアプリケーション開発、データ処理、可視化、ストリーミングなどについても取り上げられています。

おおー!

response = query_engine.query("Databricksにおける大規模言語モデルに関してはどのようなことが書かれていますか?")
print(response)

Databricksにおける大規模言語モデルに関しては、セマンティック検索という機能が紹介されています。セマンティック検索は、自然言語および言語の意味を加味した検索を行うものであり、Unity Catalogのテーブルのメタデータを対象としています。現時点では、テーブル内のデータは検索されません。また、Databricksでは日本語でも自然言語による検索がサポートされており、列数の多いテーブルなどの検索も可能です。

自分で記事を書いているので分かるのですが合ってます。面白い。もっといじってみます。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
0
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
0