knownet
お試し用URL: https://knownet.towasys.com/
お試し用URL: https://knownet.towasys.com/
昨日、狂ったようにプログラムを書いた反動で頭がうまく働かなかった。knownetでAPIを叩いている部分をNext.jsのServer Actionで置き換えようとしたが、理解が足りずにうまく動かずにいる。3000行ほど書いたけど全部捨てよっか。
とりあえず、AmplifyのGraphQL APIを叩くにおいては認証(認可?)でnext/headersを使わずにdocument.cookieを使った方が良いということがわかった。next/headersを使うと、Server Actionの呼び出し元のComponentに始まり、すべての呼び出し元となるComponentをServer Component(RSC?)にしないと動かなくなってしまう。しかもそれが連鎖するので影響範囲がでかい。地獄。サンプルでnext/headersを使うのをやめろ。
副業の受注が確定した。コンペで競合がつよつよエンジニア出してきてたらしいけど、私が勝った。イエーイ。単価が安すぎる説はある。
Cartesian Genetic Programmingで文章の類似度を学習をやってたこととかを伝えたのが効いたのだろう。怪しい研究はしておくものだ。怪しさ故に「やっとるな」って感じが出て良い。もちろんBERTのファインチューニングみたいな王道についてもやったことがあることを伝えておいた。
なんか大学の研究室で客員研究員をやらせてもらえそうな感じになっている。副業先への仲介をしてくれる会社の社長が、大学で教授をやっており、「どう?」という感じで声を掛けられた。縁やわ。大学行き直したいとか思っていたので、渡りに船だ。特に今の会社をやめる必要もなく、研究成果が出たら論文を出して博士号とろうぜという感じらしい。無職になって学費を払って大学に行くことを考えていたので、そんな都合の良いことをやっていいんだとなった。今までよくわからんものを作ってきたのが論文にできるかもしれない。
夕飯のあと、どうも物足りなかったので、買い置きたる栗を食べた。焼き栗のつもりで食べたら生だった。生でも甘みが感じられる。すごい。15分焼いたら半生だった。45分ほど焼いたらそれなりになった。そうこうしているうちに満腹中枢が刺激され、物足りなさは消えていた。
特に記憶に無いです。
「Next.jsを使えば忌々しいAmplifyのDataStoreを無くせるんじゃね?」とか思って、社内システムの移植を開始した。もともとReactで動いていたので、3時間ほどでシステムがNext.jsの上で動くようになった。Next.jsの恩恵が受けられるのはこれからだ。
「Next.jsを使えばBERTでSentence Embeddingを取るAPIをサーバーレスでつくれるんじゃね?」とかおもって実装した結果、比較的高性能な開発機であっても計算に3秒もかかることがわかり、検索には使えず無事死亡した。
「あれ」ってどんなんだったっけと思って、デライトで検索しようとしたところ、デライトが落ちていた(障害のお知らせ)。普段当たり前のようにデライトが使えているが、knownetの開発を通じてデライトが安定稼働していたことの異常さに気付きつつある。knownetの方はちゃんと動いている期間のほうが短い。
探そうとしていた情報については『t_wの輪郭』を参照して見つけられた。いざというときの保証として機能してくれた。
無限にReactのレンダリングが走り、検索は動かずという状態だった。「何を見てたんだ?」とは思うものの、コードの変更において焦点外の箇所に波及してバグると、気づくことが非常に難しい。まじでコレを保守するの無理な気がしてきた。質的難易度が非常に高い。
自動テストをやったほうが良いのはわかっているが、自動テストがどうも導入しづらい。
Embeddingの類似度に基づいて関連付けの候補を出す機能 だの 検索結果から投稿を選んだ際に非表示の関連付けをつけて検索結果を強化する機能 だのを追加したいのだが、もはや認知的攻勢限界に達しており、これ以上機能を追加することは考えられない。バグが生まれる可能性が極めて高い。しばらくは理腑やバグつぶしに徹したい。もう少し難易度が下がってきたら機能追加を考えよう。
aws dynamodb scan --table-name "Relation-cjmawb5ph5bldaq5adhzqfmvw4-staging" --attributes-to-get "id" | jq '.Items[].id.S' | xargs -P 20 -I{} aws dynamodb execute-statement --statement "UPDATE \"Relation-cjmawb5ph5bldaq5adhzqfmvw4-staging\" SET _version=0 SET _lastChangedAt=0 WHERE id='{}'"
日記を書く時、大体「何やってたっけ」って書いてから書き始めている。
健康診断に行ってきた。健康診断の予約をしたら保険証のコピーをFaxで送れと言ってきたので、そんな時代錯誤なところなら空いているだろうと推量していったところ普通に混んでいた。ワーオ。
特に深く考えずに生活習慣病予防健診にしたのだが、人生初のバリウムを飲むことになってしまった。不味い不味いと聞き及ぶため、うわ〜〜と思いながら飲んだのだが、さほど不味くはなかった。時代の進歩とかで不味くなくなったのかもしれない。バリウムを飲んだ後は胃全体にバリウムを付着させるために、機械でグルグルされた。バリウムメリーゴーランドや。
健康診断で絶食だったため、バリウムしか飲んでおらず、健康診断後は相当に空腹だった。前から気になっていた近所のホルモン丼屋さんを覗いてみたが、行列だった。諦めた。また今度行きたい。
仕方がないのでコレまた気になっていた近所のホルモン焼肉屋に行ってきた。昼はホルモンラーメンを提供している。ラーメンの提供は昼だけで、昼に店が開いているのは平日だけなため、非常にレアというか、食べに行ける機会が殆どない。
そういうわけで食べに行ったところ、ホルモンラーメンは非常に良かった。焼肉屋が片手間で作ってるんだろうと侮っていたがちゃんと美味しいとんこつラーメンで、その上に専門店らしく質の高いホルモンが乗っかっていた。コレで1000円なのだから、利益出て無いでしょって味だった。
当然この店も盛況で、私が店に入った後には次々に近所の会社の従業員たちが現われ、相席となった。最近相席をすることが多いな。
相変わらずナレッジベースのknownetの改良をしている。ネチネチと。
検索フォームがコンテンツに重畳して表示する形式としているが、なんか気になったので、下にスクロールしたら隠れて、上にスクロールしたら現れるというのを試してみようとなった。メチャクチャ大変だった。
出したり隠したりの実装はすんなり行ったのだが、フローティング的にフォームをコンテンツの上に重畳して表示しており、色も煮ているのでどうにも識別に何がある。せっかくなので今っぽい感じにしようと思い、AppBarから白帯が出てくるタイプのUIにしようとしてしまった。そうしたところ、Chromeで表示したときにスクロールバーの箇所に白帯が表示されないというレイアウト崩れが発生した。散々、あれこれこねくり回したり、愚痴ったりしたが、どうやら解決方法はないようで、諦めてフローティングでの表示に戻してしまった。
フローティングで表示するならいい感じの角丸にしたいと思った。これも大変だった。検索フォームのUIパーツとして、Amplify UIのSearchFieldというやつを使っているのだが、こいつが角丸にすると外枠の線がおかしなことになる。Styleを直接当てるのが悪いのだろうと推量してThemeProviderを使ったが、コレもうまくいかない。同仕様もないので、検索フォームを自作する羽目になった。コレだから他人のライブラリを使うのはダメなのだ。
最終的になんとか形になったので、デプロイしておいた。だんだんマシな見た目になってきたと思う。
今日も日記を書いている。だんだん文章を書く感覚が戻ってきた。あるいは文章を書く忌避感が消えてきた。
その日にやったことの統括としては、なるべく遅い時間に書いたほうが良いのだが、多くの人に呼んでほしいとか言う欲を出すと、ちょっと早めに書いて出したほうが良いのかもしれない。
朝から『t_wの輪郭』をいじっていた。IMEに単語登録するためのファイルを出力していた。まだデライトの投稿を取り込み切れていないので、ぜんぜん登録できる単語が集まらない。もうしばらくしたら取り込みが進むはずなので、明日また様子を見たい。
knownetを会社用にデプロイしており、コレの業務利用のデモンストレーションのために、日本国憲法をデータとして取り込んでいた。文章内に出現する各単語に対しては、ちゃんといい感じに関連付けるようにしてある。この作業は本当に良い勉強になった。「国権」が「国の権利」ではなく「国の権力」であることを知ることができた。そんな感じで午前は終わった。
郵便局に転居・転送サービスの届け出を出してきた。これを出すのはもっと早いほうが良かった。他の住所変更の何より先にやっても良いぐらいだった。何しろ、旧居への郵便が新居に転送されるのだから。
毎日、上司との進捗報告があるので、ガガガッとBacklogのチケットを一つやっつけた。チケットを一つこなしておくとやった感が出る。
頭の調子が良いと本業がおろそかになって、逆に進捗が悪くなる減少がある。
恒例の通院。「調子いいっす」、「次回薬減らしましょうね〜〜」、終わり。
まじで調子が良いので、もう通院しなくても良いんじゃなかろうかとは思うものの、保険的に通院を続けている。不調が再来した場合にすぐに相談できる態勢を持っておきたい。
通院の後にトリキに行ってビールを飲んで移動の手間を償却した。
何駅か歩いた。30分は歩いた。
高級住宅街を突っ切る。景観が良い。公共の福祉って感じだ。治安が悪くなったらゲーテッドタウンが増えるんだろうか。そうなると散歩ができなくなる。治安大事。
徒歩のまま高輪ゲートウェイ駅に到着。高輪ゲートウェイ駅に来たのは初めてだったが、めちゃくちゃ作りかけって感じだった。でかい箱の中にとりあえず駅の機能だけがある感じ。
意味的接続による検索の順位付けを思いついたので、実装してみている。実装してみたは良いものの、実験するデータがない。手元のknownetにはろくすっぽデータが入っていない。日本国憲法いれてぇ〜〜〜。めんどくせぇ〜〜〜。
当初ベクトル検索を用いようとしていたが、検索速度や精度に問題が有るため取りやめた。
現在は検索語を分かち書きして、検索語を構成する句を含む投稿を取得、さらにその投稿と紐づく投稿を取得し、投稿のEmbeddingと検索語のEmbeddingのコサイン類似度で並び替えしている。
Embeddingの取得にはAmazon Bedrockを使っている。
Power Virtual Agentsを触ったのだけど、なんかこう……デライトでいいじゃんってなった。
結局チャットボットはナレッジベースの一形態でしかなくて、「質問の提案」みたいなことをしてくれるが、それって階層構造的だよねという話。
knownetを推したいが、まだ運用体制とか整ってないので、まだその時ではない。いや、いい加減推していった方が良い気はしてきている。
輪郭法は極めて単純ながら強力。
1週間でそれっぽいものが作れてしまった(色んな検討とか含めるともっと長いが)。
デライトが広まれば、他にもクローンが作られるだろうし、輪郭法の他の応用もされそうだ。
仕事のソフトウェア開発進まないのに、趣味のやつがバシバシ進んでてアレ
作ってる趣味ソフトウェアが、会社に導入してやろうと画策してるナレッジベースシステムなので、お前何遊んでんねんとなるやつです