Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Global Azure 2024 in Fukuokaに登壇しました!

エンジニアのみっつーです!
先週末に、Global Azure 2024 in Fukuokaに登壇させていただきました。

jazug.connpass.com

登壇内容紹介

私が今回お題にしたのはKernel MemoryというOSSです。
Kernel Memoryは、様々なデータソースからインデックス作成することに特化したマルチモーダルAIサービスで、例えば話題のAzure OpenAI Serviceを使ってこれまた話題のRAGアーキテクチャ実現のために様々なデータソースとの繋ぎ込みを行ってくれるようなサービスです。

github.com

ざっくりポイントは下記の通りです。

  • Kernel Memoryの使用方法は2パターン
    • サービスとしてあらゆる言語・ツール・プラットフォームから使用
    • プラグインとして使用(.NETアプリであればライブラリとして使用することが可能)
  • 複数のデータソース形式に対応
    • PDF, Word, 画像, Webページ…などなど
  • インデックス情報の保存先を変更可能
    • デフォルトではローカルに保持される
    • 永続化したい場合はAzure AI Search等に出力することが可能(環境変数やクライアント初期化時パラメータ差し替えのみでOK)

何はともあれ、とりあえず動かしてみるのがイメージがつきやすいですね。
infraディレクトリを開くとREADMEにDeploy to Azureボタンがあるので、そこからサービスとしてのテンプレートデプロイが可能です。
※このときサービスのアクセスキーを設定する必要があり、キーのバリデーション内容が少しわかりにくいので注意。ContainerAppsの起動に失敗していたら落ち着いてログを確認しましょう。

github.com

↑をデプロイしたら、サンプル 001-dotnet-WebClient を(接続先を↑サービスURLに変更してから)動かすことで、様々な形式のデータソースを読み込んでの質問回答のサンプルを見ることができます。

github.com

一部出力例(ソースコードコメントより抜粋):

Question: What's Kernel Memory?

Answer: Kernel Memory (KM) is a multi-modal AI Service designed to efficiently index datasets through custom continuous data hybrid pipelines. It
supports various advanced features such as Retrieval Augmented Generation (RAG), synthetic memory, prompt engineering, and custom semantic memory
processing. KM is equipped with a GPT Plugin, web clients, a .NET library for embedded applications, and is available as a Docker container.

The service utilizes advanced embeddings and Large Language Models (LLMs) to enable natural language querying, allowing users to obtain answers from
indexed data, complete with citations and links to the original sources. KM is designed for seamless integration with other tools and services, such
as Semantic Kernel, Microsoft Copilot, and ChatGPT, enhancing data-driven features in applications built for popular AI platforms.

KM is built upon the feedback and lessons learned from the development of Semantic Kernel (SK) and Semantic Memory (SM). It provides several features
that would otherwise require manual development, such as file storage, text extraction from files, a framework to secure user data, and more. The KM
codebase is entirely in .NET, which simplifies maintenance and eliminates the need for multi-language support. As a service, KM can be utilized from
any language, tool, or platform, including browser extensions and ChatGPT assistants.

Kernel Memory supports a wide range of data formats, including web pages, PDFs, images, Word, PowerPoint, Excel, Markdown, text, JSON, and more.
It offers various search capabilities, such

Sources:

- file4-KM-Readme.pdf  - default/doc002/58632e8b703d4a53a630f788d7cfbfb2 [Monday, April 15, 2024]
- https://raw.githubusercontent.com/microsoft/kernel-memory/main/README.md [Monday, April 15, 2024]
- https://raw.githubusercontent.com/microsoft/kernel-memory/main/docs/security/security-filters.md [Monday, April 15, 2024]

データソースのリンク付きで返してくれるのが素晴らしいですね。
また、infraディレクトリからのデプロイ内容を見るとわかりますが、色んな種類のリソースを使うのでAzureの勉強にもなります。

おわりに

余談ですが、イベント前日時点では 001-dotnet-WebClient サンプルをそのまま動かすと画像読み込みの部分でエラーが出ていて(Document Intelligenceリソースが無いため)ソースコード内でフラグ切り替えしてましたが、イベント当日の朝にbicepにDocument Intelligence追加されてました😂
今回登壇の題材を決めるにあたってSDK起点でAzureのAIまわりのサービスの動向を知った部分もあり、AIまわりはサービスの更新に留まらず周辺のSDKやサンプルの更新もかなり早いと実感しました。

今回の知見をもとにオレオレデータソースとの繋ぎ込みも試してみたいと思います。

登壇資料:

speakerdeck.com


サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com