AIChatWebプロジェクトテンプレートをollamaで試してみた

Microsoftから提供されている、AIChatWebプロジェクトテンプレートはユーザーの質問に対して、Embeddingモデルに登録されたPDFの内容から回答を導き出すAI Chatアプリケーションのプロジェクトテンプレート。

以下の方法でプロジェクトテンプレートをインストールできる。

> dotnet new install Microsoft.Extensions.AI.Templates

デフォルトではgithubmodelsを使用するようになっているが、今回はローカルのollamaで試してみた。

プロジェクトを作成するときに下記のようにすることで、LLMのプロバイダやLLMモデル,Embeddingモデルを指定できる。

> dotnet new aichatweb --provider ollama --vector-store local --ChatModel llama3.2:latest --EmbeddingModel all-minilm:22m -o <プロジェクト名>

これでプロジェクトを作成すると、以下のようにProgram.csにLLMへの接続やモデルが自動的に反映される。また、Embeddingの設定等も自動的にされる。

using Microsoft.Extensions.AI;
using AIChatWebAppOllama.Components;
using AIChatWebAppOllama.Services;
using AIChatWebAppOllama.Services.Ingestion;
using OllamaSharp;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorComponents().AddInteractiveServerComponents();

IChatClient chatClient = new OllamaApiClient(new Uri("http://localhost:11434"),
    "llama3.2:latest");
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = new OllamaApiClient(new Uri("http://localhost:11434"),
    "all-minilm:22m");
・・・
using Microsoft.Extensions.VectorData;

namespace AIChatWebAppOllama.Services;

public class IngestedChunk
{
    private const int VectorDimensions = 384; // 384 is the default vector size for the all-minilm:22m embedding model
・・・

このテンプレートではEmbeddingはPDFに限られ、wwwroot\Data下にあるPDFの内容が対象となる。

とりあえず、実行してみる。

「サバイバルキット」について質問してみると、

というような感じで、PDFの内容から回答を引っ張ってきている。「Searching」の日本語が、入力した質問と全く違い、変な日本語になっているのはLLMの問題か?

wwwroot\Data下におくPDFファイルを別のものに置き換えたり、UIを適当にいじったりすれば、それなりのAI Chatアプリケーションにはなりそう。

ただし、ollamaを使用すると回答を得るまでにかなり時間がかかるね。モデルのせいかもしれないけれど・・・

たけぞう について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。 好きなことだけ拾って投稿しているので、内容にはあまり期待しないでねw
カテゴリー: .NET, AI, asp.net core, Blazor, C#, 技術系 パーマリンク

AIChatWebプロジェクトテンプレートをollamaで試してみた への1件のコメント

  1. たけぞう のコメント:

    9/29 プロジェクトテンプレートのインストール方法を追加

たけぞう へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください