Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GoとClickhouseで作るRAGアプリ / Building RAG Applicati...
Search
linyows
July 21, 2026
Programming
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GoとClickhouseで作るRAGアプリ / Building RAG Application with Go and Clickhouse
Fukuoka.go#23の資料
linyows
July 21, 2026
More Decks by linyows
See All by linyows
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
840
Protocol Buffersの型を超えて拡張性を得る / Beyond Protocol Buffers Types Achieving Extensibility
linyows
0
310
研究開発と実装OSSと プロダクトの好循環 / A virtuous cycle of research and development implementation OSS and products
linyows
1
990
コードジェネレーターで 効率的な開発をする / Efficient development with code generators
linyows
0
510
研究を支える拡張性の高い ワークフローツールの提案 / Proposal of highly expandable workflow tools to support research
linyows
0
730
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative deployment in non-container environments
linyows
1
650
メール送信サーバの集約における透過型SMTP プロキシの定量評価 / Quantitative Evaluation of Transparent SMTP Proxy in Email Sending Server Aggregation
linyows
0
1.3k
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
720
研究の再現性を高める 仕組みをGoでつくる / Creating a system to improve the reproducibility of research using go
linyows
1
410
Other Decks in Programming
See All in Programming
iOSDC2026登壇資料.pdf
riofujimon
0
170
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
420
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
170
SREの越境 / SRE Collaboration
y0hgi
2
220
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
300
Are APIs Still Relevant in the AI Era?
soyuka
0
240
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Ethics towards AI in product and experience design
skipperchong
2
380
Evolving SEO for Evolving Search Engines
ryanjones
0
290
Optimising Largest Contentful Paint
csswizardry
37
4k
It's Worth the Effort
3n
188
29k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
BBQ
matthewcrist
89
10k
Transcript
Tomohisa Oda / July 21, 2026 GoとClickHouseで作る RAG Application Fukuoka.go
#23
Fukuoka.go #23 @linyows Blog: tomohisaoda.com Affiliation: Sakura internet, Inc.
Fukuoka.go #23 共有メールホスティングにおける輻輳影響 を局所化する透過型SMTPプロキシの提案
Fukuoka.go #23 Warp Architecture: https://warp.linyo.ws
Fukuoka.go #23 はじめに
Fukuoka.go #23 メール技術は人気がない ๏ メールは古いオープンなメッセージングシステム ๏ 分散システムで複数のプロトコルの組み合わせで成り立つ ๏ 生活で使う身近な存在なはずだが、メール技術が好きだと言う若者に出会った ことがない
๏ 無料かつ高品質?なGmailの存在が大きいのかもしれない ๏ 日本ではLINEのようなクローズドなサービスが好まれるので、普通の人のメー ルは受信が中心
Fukuoka.go #23 何をやっているか ๏ 次世代のWebmailサービスを開発している ๏ Gmailの代わりになることを想定 ๏ メールサーバはオールインワンMTAのStalwartを使用 ๏
「検索:stalwart」→ これからメールサーバをつくるならStalwart ๏ StalwartとWebmailはJMAP:JSON Meta Application Protocolを使用する ๏ Webmailにはスマートな検索が必要
Fukuoka.go #23 Stalwartの全文検索Storages ๏ FoundationDB, RocksDB, SQLite ๏ PostgreSQL ๏
MySQL ๏ ElasticSearch ๏ Meilisearch
Fukuoka.go #23 検索パイプラインの分類 ๏ テキスト解析:トークナイズ・ステミング・サブワード化 ๏ インデックス構造:転置インデックス・グラフ・ツリー・量子 化・ハッシュ ๏ マッチング:ブールモデル・語検索・フレーズ検索・意味一致
๏ ランキング:スコアリング・ランク融合
Fukuoka.go #23 Storage テキスト解析 マッチング スコアリング RocksDB, FoundationDB, SQLite Stalwart実装
Stalwart実装 なし PostgreSQL PG実装 PG実装 なし MySQL Stalwart実装 MySQL実装 なし ElasticSearch ES実装 ES実装 ES実装(BM25) Meilisearch MS実装 MS実装 MS実装(バケットソート)
Fukuoka.go #23 スマートな検索を提供する ๏ レキシカル検索:全文検索、検索ワードがわかっているやつ ๏ セマンティック検索:意味検索、記憶が曖昧で言い換えるや つ(ただしChat形式ではない) 両方に対応するハイブリッド検索を提供する →
スマートな検索
Fukuoka.go #23 セマンティック検索を作る
Fukuoka.go #23 RAG Storeを選定する ๏ セマンティック検索にはEmbeddingモデルを使ったベクトルデータを作成しDBに保存す る ๏ ベクトル型とHNSW(Hierarchical Navigable
Small World)インデックスに対応の DBが必要 ๏ アカウント数、データ量が多い大規模を想定 ๏ 専用ベクトルDBはオンメモリで処理し、列指向DBのClickhouseはディスクストレージを 活用するので比較的安価 ๏ FromやDateでの絞り込みによる構造化検索も必要、ということでClickhouseを使用する
Fukuoka.go #23 System Architecture ๏ EmbeddingモデルはさくらのAI Engineで multilingual-e5-large を使う
Fukuoka.go #23 Go実装:chunk分割 ๏ htmlタグ、引用、署名を除去 ๏ 段落 → 改行 →
Max文字数の順で分割 ๏ ISO-2022-JPなどはサーバ側で全て UTF-8:JMAPの仕様
Fukuoka.go #23 Go実装:Clickhouse ๏ ドライバはClickhouse謹製の github.com/ClickHouse/ clickhouse-go/v2 ๏ 標準のnet/httpでも良いが、上のド ライバはバイナリ転送やOTEL対応
やTCPでのコネクションプールを やってくれるので便利 ๏ nativeインターフェース以外に database/sql 互換インターフェース ももっている
Fukuoka.go #23 ハイブリッド検索にする
Fukuoka.go #23 Go実装:異なる検索結果を一緒にする ๏ レキシカル検索結果はスコアリング順、セマンティック検索 の結果はコサイン距離順で、同じ順序でマージできない ๏ RRF:Reciprocal Rank Fusion(相互ランク融合)という
アルゴリズムがあり、順位だけを使ってスコアリングする手 法を使う
Fukuoka.go #23
Fukuoka.go #23 集合Mに含まれる 要素mの全ての総和 定数 順位
Fukuoka.go #23 Go実装:RRFの簡単な例 ๏ レキシカル検索(日付降順): [A, B, C] セマンティック検索(距離昇順): [B,
D, A] ๏ スコア(k=60): A = 1/61 + 1/63 ≈ 0.03226 B = 1/62 + 1/61 ≈ 0.03252 C = 1/63 ≈ 0.01587 D = 1/62 ≈ 0.01613 ๏ RRF: B, A, D, C ๏ 両方に出たアイテムは点が2回加算されて上位に来る ๏ ただ、ベクトル検索はどんなクエリにも必ず何かを返すので、絶対的な距離の閾値による足切りが必要
Fukuoka.go #23 まとめ
Fukuoka.go #23 まとめ ๏ Stalwartにおける検索バックエンドはいろんな選択肢がある ๏ 単純なレキシカル検索に加え、セマンティック検索をGoと ClickhouseでRAGアプリの構築例を紹介した ๏ また、異なる順位をマージにRRFを使用している
検索技術に詳しい人いろいろ教えてください ><
Fukuoka.go #23 Hiring: さくらインターネットでは Goを使ったクラウドのコン ポーネントの開発や、開発チームのマネージメントをしてくれ る仲間を探しています!気軽にお声かけください!