Semantic Kernelを使う(6) - 考えるエンジニア
FC2ブログ

Semantic Kernelを使う(6)

 Semantic KernelでRAG(Retrieval-Augmented Generation)を実現するために、試行錯誤を継続しています。以前のブログでは、Semantic KernelのPlugin機能を用いましたが、今回はMemory機能を使いました。
 このシリーズの1回目2回目でもMemory機能を使いましたが、簡単な文をMemory登録しただけで、長いテキスト文書を試していませんでした。

 今回は長い文章を使って検証しました。題材は、以前のブログで使った『注文の多い料理店』の全文です。動かしたプログラムは以下の通り。11行目でテキスト文書をKernel Memoryに登録しています。
using Microsoft.KernelMemory;
using dotenv.net;

dotenv.net.DotEnv.Load();
var env = dotenv.net.DotEnv.Read();

var memory = new KernelMemoryBuilder()
.WithOpenAIDefaults(env["OPENAI_API_KEY"])
.Build<MemoryServerless>();

await memory.ImportDocumentAsync("chumon.txt", documentId: "doc001");

var question = "料理店の札には何という店名が書かれていましたか";
var answer = await memory.AskAsync(question);

Console.WriteLine($"Question: {question}\n\nAnswer: {answer.Result}");
実行結果は以下の通りで、問題なく正解を導けました。RAG_20241013.png
 次の題材も以前のブログでお話しした、私のブログ内容のテキストデータです。実行結果は以下の通りで、正しい回答を導くことはできませんでした。blogQA_20241013.png同じテキストデータで、文章の長さ(容量)が多いだけという認識ですが、詳しい調査ができていないので、原因は分かりません。

 今回、Semantic KernelのMemory機能でRAGを導入しようとしましたが、結果が中途半端なので引き続き調査を行っていこうと思います。

コメント

非公開コメント

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: