566 Views
August 28, 24
スライド概要
8.28 color is【クラウドLT大会vol.10】フリーテーマ!
name: - いけだしんのすけ work: - インフラ・情シス like: - バイク - 読書 - 映画 - アニメ - ゲーム
Azure Table Storageって便利だなあ (仮) Backlogのデータを検索しやすくする ! Azureのさくっと活用
Xやってます! (ごくたまにつぶやくよ)
背景 お客様 社内スタッフ Aプロジェクト 質問: ×××× と いう事象が発 生しました。調 査をお願いしま す。 回答: 調査し たところ、 ××××は×××× で…
課題 別のお客様 社内の別スタッフ Bプロジェクト 質問: ×××× と いう事象が発 生しました。調 査をお願いしま す。 前、誰かがどこかで類 似の事象を対応してた 気がするけどなんだっ け...
解決 QA QA お客様 QA QA 質問: ×××× と いう事象が発 生しました。調 査をお願いしま す。 過去の調査・解決方 法を参考にできるので 時短になる! プロジェクト横断的に 過去のQAを類似検索!
要件 ● RAG (検索拡張生成) までは必要ない。検索だけで良い。 ● 手間とお金をかけたくない。 ● プロトタイプを個人的に作ってみて効果を試してから社内に ● 手間とお金をかけたくない (2回目)
AzureとGitHubでさくっと作る Backlog APIで チケットを取得 → AOAIでベクトル化 → CosmosDBに保存 GitHub Actions scheduleトリガーで月1回起 動
Azure Cosmos DBでさくっと マイクロソフトが提供するフルマネージドのNoSQLデータベースサービス 今年5月のMS Buildで発表が あり、ついにfor NoSQLでベク トル検索が対応した! https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/vector-search
Azureで’検索’といえば AI Searchだけども Cosmos DB サーバレスモード Azure AI Search Basic https://learn.microsoft.com/ja-jp/azure/search/search-sku-tier https://learn.microsoft.com/ja-jp/azure/cosmos-db/understand-your-bill ● ● ● ● 最小1 RU/秒から最大5000 RU/秒まで自動スケール ストレージは別途課金 使用量に基づいた課金 ● ● 全文検索 + ベクトル検索 + セマンティックランカー等のつよつよな検 索機能 最大3つのレプリカと3つのパーティションをサポート 月額約 ¥14,000~¥15000くらい AI Searchのつよつよな機能は嬉しいけれど、 金額と今後もし社内展開することも考えると...! よし、Cosmos DBに決めた! WEB 画面で提供 Cosmos DB BI で可視化
さくさくっと簡単設定 https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/vector-sear ch#vector-indexing-policies 種類 内容 ディメンション quantizedFlat ベクトルをインデックスに格納す る前に圧縮する。 flatインデックスに比べて、検索 が速くなり、スループットが向上 し、RUコストが低くなる。 4096 flat 圧縮は行わないため、100%の精 度でベクトル値を検索できるが、 ベクトルの数が多いと、検索時 間が長くなりやすく、リソース消 費(RUコスト)が増加する。 505 diskANN 高速かつ効率的な検索を行うた めの特別なインデックス。検索 時間が短く、RUの消費も少ない が使用には申請が必要。 4096 text-embeddings-ada-002を使うので、 quantizedFlatを選択し、1536次元で作成 ※Azure Cosmos DB の [機能] ページからプレビュー機能の登録が必要 ポータル画面のコンテナ を最初に作成する画面 から選択できるように なってるので、簡単に設 定できる
コーディングは少しさくさくっといかなかった https://github.com/Azure/azure-sdk-for-go/issues/18578 Go言語のCosmosDB SDKではパーティ ションキーを指定せずにクエリかける事が どうもできないらしい。 なので、パーティションキーを見直して再作 成することに。 pythonで以前検証した際には `enable_cross_partition_query`というパラ メータがあったので、まあGo言語でもできる と思ってた...
GitHub Actions scheduleトリガーでさくっと定期処理 しかし...GitHubのIPは固定ではなく、時々IPリストが変更になる Cosmos DBにはIP制限かけ てる。 セルフホステッドランナーまで は用意したくない。
ワークフロー実行時の IPを取得して CosmosDBの更 新をおこなうステップを入れてさくっと対応! 開けた穴を元に戻すス テップも最後に入れてま す
実行結果 Go言語で書いたコマンドライン ツールから実行するよ。 自然言語クエリ 検索結果
まとめ ● 過去の類似QAを検索するひと手間は楽になったと思う(たぶん) ● Cosmos DBは便利 (コスパ良く使いやすい) ● RAGしなくてもとりあえずCosmosDBにいれておこうという気分になってくる ● まだ月いくらかかっているかの計算はしていないがたぶん安いハズ...! ● 検索精度や社内展開にむけてはこれからなので、要改善!
参考 ● https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/vector-search ● https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/ai/azopenai ● https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/data/azcosmos ● https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-go?pivots=de vcontainer-vscode#query-items ● https://developer.nulab.com/ja/docs/backlog/api/2/get-issue-list/
ご清聴有難うございました