こんにちは!
私の質問(複数)は記事の一番下にありますが、まずは私が何をしようとしていて、どうやっているのかを説明させてください:
進行中のオフラインAIアシスタントのために、以前のチャットから抽出したステートメント(「メモリ」)をSqliteデータベースに保存する、とてもシンプルなメモリシステムを実装しました。
その後のチャットでは、ユーザーがプロンプトを入力するたびに、これらの「メモリ」を埋め込みベクトルのコサイン類似度による比較と再ランキング(私は現時点では、埋め込みにsnowflake-arctic-embed-s Q8_0、再ランキングにbge-reranker-v2-m3 Q5_k_mを使用しています)によって、最も関連性の高いものを抽出します。
その後、これらの「メモリ」は、回答を得るためにLLMへ送る前に(ユーザーの)プロンプトへ注入されます。
使用しているLLMはQwen3.5 9B Q4_K_Mです(パラメータ:Top-k = 40, top-p: 0.95, min-p = 0.01, temperature = 1.0, thinking/reasoningなし)。
Qwen 3.5 9Bは、以前使っていたものからかなり大きな進歩なのですが、それでもモデルにとって「メモリ」と実際のユーザープロンプト/現在のチャットを区別するのが、時々まだ難しいことがあります。
その結果、注入された「古い」情報が、LLMの回答で誤った形で使われてしまいます(たとえば、友人が数週間前に遊びに来ていたとしても、より賢いモデルや人間なら、その訪問はとっくに終わっていると分かるはずなのに、LLMは「いい時間を過ごしてる?」のように聞いてしまう、などです)。
以下に、私が現在実験しているシステムプロンプトの形式と、補強されたユーザープロンプトを示します:
システムプロンプト:
ユーザーとの会話が求められています。 ### ルール ### - 回答はシンプルで短く保つようにしてください。 - 毎回の返信で質問を入れないでください。適度に(散発的に)してください。 - 絵文字を使わないでください。 - リストを使わないでください。 - 略語を使わないでください。 - ユーザープロンプトには2つのセクションがあります。一方は注入された背景情報(メモリ、日付、時間)を保持し、もう一方はあなたが返信すべき実際のユーザープロンプトを保持します。これらのセクションには「### INFORMATION ###」や「### USER INPUT ###」のような見出しがあります。 ### 過去の会話の要約 ### ユーザーは「Good day to you.」という挨拶でアシスタントを呼びかけて会話を開始しました。アシスタントは同様の挨拶として「Good day.」と返し、その特定の日付にまたユーザーから連絡をもらえてうれしいと付け加えました。やりとりは、相互の挨拶と、再発するやり取りについてのアシスタントの一言のみで構成されており、当事者間でそれ以上の話題や詳細は交換されませんでした。 - 最後の会話の日付と時刻:2026-03-30 13:20(昨日ではありません) - 現在の曜日、日付、時刻:月曜日、2026-03-30 13:22 補強されたユーザープロンプト(例):
### INFORMATION(直接のユーザー入力ではありません) ### 以前のチャットからのメモリ: - 2026-03-26(4日前)から:「ユーザーにはフレディという名前の犬がいる。」 - 2026-03-26(4日前)から:「ユーザーは犬と一緒に散歩に行った。」 - 2026-03-27(3日前)から:「ユーザーは車を持っているが、公園へ散歩に行くのが好きだ。」 メモリに関する注記: - 日付を考慮してください。いくつかの情報はもう有効ではないかもしれません。 - 現在のチャットの文脈で意味があると確信できる場合にのみ、メモリを使い/参照してください。 現在の曜日、日付、時刻:月曜日、2026-03-30 13:22 ### USER INPUT ### こんにちは、犬の散歩から戻ってきました。 ご覧のとおり、私はすでにLLMに対して、何が何で、いつの情報で、そしてそれをどう使うべきかについて、かなり多くを伝えています。
- LLMがより理解しやすいように、プロンプト(形式)を改善するアイデアはありますか?
- それとも、9Bの重みモデルではどうせ時間の無駄だと思いますか?つまり、「十分に賢くない」/それを行うのにパラメータが少なすぎるだけなのでしょうか?
残念ながら私のハードウェアは限られています。これは、32GB RAM(あまり重要ではない)と6GB VRAM(GeForce Mobile 3060)、壊れたディスプレイを備えた古いゲーミングノートPCで動かしています。また、Debian Linux と llama.cpp(mt_llmを参照)を使用しています。
よろしくお願いします!
[link] [comments]



