CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Apple Foundation Models Frameworkと自分の準備したドキュメントをもとに回答できるアプリを作ってみました

前回は、Foundation Modelsを使って問い合わせに回答できるというシンプルなアプリについて説明しました。

www.crossroad-tech.com

予定通りなので当然の結果ですが、これだとFoundation Modelsに入っている知識の範囲でしか回答できなくなります。

そこで今回は、iPhone/iPadの中に入っている情報をもとにして (= Retrieval-Augmented Generation: RAG) 回答するアプリを作ってみました。

RAGがない場合、ある場合で、このように回答に差が出ました。

Answer Image of Apple Foundation Models Framework

使用した環境

MacOS : Tahoe 26.0.1
Xcode: 26.01
iPhone 15 Pro (iOS 26.01)

1. RAG対応させる処理を追加する

前回と同様に、まずは新規でXcodeプロジェクトを作ります。
www.crossroad-tech.com

その後で、ContentView.swiftに以下のコードを貼り付けます。

これもClaudeで作ってから何回か直したものです。もう少し短くなると思います。

gist.github.com

2. 動作確認

まず、私が以前書いたブログ記事のテキストをBlogText_sample.txtというファイルにコピーして、iPhoneの「ファイル」アプリに保存しました。

この記事の冒頭では、PokemonGoで有名なNiantic社について説明しており、このような文章が書かれています。

技術の話ではありませんが、会社の関係性が少し複雑だったのでまとめました。まず、元々はNianticという会社です。Pokenmon GoやIngressを開発、運営しているといえば伝わりやすいと思います。
しかし、2025年6月にスコープリーというゲーム開発会社に、ゲーム事業を売却することが発表されています。また、Niantic Spatical Incという新しい会社を作り、空間情報コンピューティングの開発に特化した部門が異動するそうです。(元々のNianticの役割は読み取れませんでした)

www.crossroad-tech.com

新しく作った「FMF_Trial_RAG」アプリを開きます。このアプリは「ファイル」にあるデータを読み込む機能が入っているので、先ほどのBlogText_sample.txtを指定します。 これで準備完了です。

最初に前回作ったアプリで「Nianticは分社化しましたか?」という質問をします。このアプリはFoundation Models Frameworkにしかアクセスしません。 わからないためか、なぜかappleのホームページを紹介されました。

次に、「FMF_Trial_RAG」アプリでBlogText_sample.txtを読み込んでから、「Nianticは分社化しましたか?」という質問をします。

すると、「はい、Nianticは分社化されました。Niantic Spatial Incという新しい会社を作り、空間情報コンピューティングの開発に特化した部門が異動しました。この分社化の一環で、〜」という回答をします。

これらの動作は動画にまとめてあります。

youtu.be

3. おわりに

ひとまずRAG相当の機能まで使えることが確認できました。他のフレームワーク、インターネット上のリソースを使うにはTool Callingという機能を使うのがよいそうです。この辺りも試してみたいと思います。