#daiizメモ

ときどきいいことを書きます

水曜日

Gemini 3.5 FlashでHTMLのimgタグを出力させるタスクが壊れたので直した。

これまではプロンプトでの指示通り

<img alt="..." ...

のように、<imgから始まるテキストを返してくれていた。

ところが今日あたりから、Markdown記法のコードブロックの開始の装飾を付けたテキストを返し始めた。

```html
<img alt="モスバーガーのロゴ入り包装紙に包まれ、カゴに入れられた、ケチャップとマスタード、刻み玉ねぎがトッピングされたホットドッグ" ...

imgタグを出力させているものの、実際にアプリ側で使うのはaltの属性値の部分だけ*1なので今回はまあいいのだが、同じモデルの出力傾向が突然変わるのはちょっと扱いづらいなあ。

https://gyazo.com/e7fb8f1606cf35f267bfc90b5cf350b9/max_size/400#anno.webp

*1:古いGeminiモデルの頃に、画像の予備テキストを生成するタスクにおいて、imgタグも同時に書かせたほうがよい仕上がりだったのでこのようにしていた。

火曜日

今日は一日中ずっと眠すぎた。スタバでコーヒーを摂取しても勝てなかった。

https://gyazo.com/e13d2ea14376fa6edfefeeecd7417060/max_size/400#anno.webp

先日開発した概要RAGのCustom Element <overview-kit>lang属性を実装した。英語でも表示できるようになった。右側のソースパネルの内容を翻訳すべきかどうかは迷っている。

Enjoy!

月曜日

週始めにしては頭が冴えていた。この調子が明日も続いてくれることを願う。同志社大学のお洒落なカフェで食べたランチプレートが美味しかった。だいぶご無沙汰になってしまっていたが、これを機にランチタイムの候補に復活させたい。夕方のパフェメニューも気になっている。

https://gyazo.com/9fffac89020b02e66f719c2c554f3209/max_size/400#anno.webp

パフェ友募集中

OverviewKit

複数文書を横断検索して概要を高速に提示するOverview RAGの実験を進めている。Google検索のAI Overviewsぽい動きができる。Cosenseプロジェクトを対象にしたデモを作った。任意のテキスト+画像データを扱えるように設計しているのでそのうち一般化される予定。Claude Codeの力も借りてWeb Components化に成功したので、独自のHTMLタグを宣言するだけで簡単に任意のウェブページに埋め込みできる。

<overview-kit
  q="daiiz 自己紹介"
  dataset="daiiz" /* あらかじめインデックス構築済み */
  autorun
></overview-kit>

裏側の検索処理も新しいアプローチを実験している。写真コレクションから離散的な「関心空間」を立ち上げる で構築したようなSemantic ID空間をインデックスとして使っており、ベクトルDBを使わずに関連する記事の特定が可能になっている。つまり、クエリ文字列のembeddingを取得する工程以外では、生の埋め込み表現を必要としない。

Semantic IDの階層構造を上手く活用することで、生成される概要文の切り口の幅を調整できる。そのものずばりの情報を取得しつつ、その区画の親の住所を段階的に参照することでほどよく広い知識を収集できる。情報検索と推薦の融合技という感じ。従来のベクトル検索では足切り件数を決めるのに苦労していたが、この手法では「何件読むか」の問題を「どの住所に触れるか」にすり替えることができた。また、住所の中身は意味の近い資料の塊なので、各住所から数件読めばだいたいOKである。これはコーパスが大きくなってもコンテキストが肥大化しなくて済むことを表す。

デモ

私のCosense /daiiz の概要を生成できるデモ。インデックスの更新処理が未実装なため一昨日くらいの記事で時が止まっているが雰囲気は体験できる。Cloud Runのインスタンスの立ち上がりで少々待たされることがあるものの、メインの推論自体は満足なスピードで動いている。なお、Semantic IDの事前構築時とクエリ解釈時のベクトル化にはGemini Embedding 2を、概要文の生成にはGemini 3.1 Flash-Liteを使用している。

クエリを変えて遊べるデモもあります。
https://overviewkit.searchwiki.org/v2?dataset=daiiz&q=daiiz+個人開発+モチベーション

金曜日

オンラインでの懇親会に参加した。

画面共有ができる環境だったので突然だけどデモをした。こういうときに面白いものをシュッと見せられるクリエイター人生を目指していきたい。LLMのおかげで、自分が作り出したものと向き合って言語化することのハードルも下がってきた。自分は何をしたくて、何を話せばうまく伝わるかを見極められるようにもなってきた。よい傾向だ。

明日は久しぶりに予定がないのでゆっくり寝よう。

マックポーク曜日 2

夜マックで倍マックポークを食べた。ポークパティが2枚になる。

https://gyazo.com/ea7d4ed2b4fbc34cd0bfb55ab27cfb6d/max_size/400#anno.webp

ボリュームには満足したけれど、マックポークらしさが失われてしまっているように感じた。らしさとは一体なんなのかの言語化はできていないが、倍でない通常メニューのほうがハンバーガーとしての総合点が高いと思う。

daiiz.hatenablog.com

期間限定かと思いきやいまのところレギュラー化しているようなので、引き続き応援したい。