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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
linyows
July 21, 2026
Programming
210
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
920
Protocol Buffersの型を超えて拡張性を得る / Beyond Protocol Buffers Types Achieving Extensibility
linyows
0
320
研究開発と実装OSSと プロダクトの好循環 / A virtuous cycle of research and development implementation OSS and products
linyows
1
1k
コードジェネレーターで 効率的な開発をする / Efficient development with code generators
linyows
0
520
研究を支える拡張性の高い ワークフローツールの提案 / Proposal of highly expandable workflow tools to support research
linyows
0
750
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative deployment in non-container environments
linyows
1
670
メール送信サーバの集約における透過型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
740
研究の再現性を高める 仕組みをGoでつくる / Creating a system to improve the reproducibility of research using go
linyows
1
420
Other Decks in Programming
See All in Programming
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
370
contenteditable と日本語入力に向き合う
colorful12
0
180
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
360
最近”作らせてる” ローカルAIアプリの話
akit37
0
440
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
200
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
960
Domain-Driven Transformation
hschwentner
2
2.3k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
610
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
140
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
470
The Pragmatic Product Professional
lauravandoore
37
7.5k
Design in an AI World
tapps
1
350
The Curse of the Amulet
leimatthew05
3
15k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Bash Introduction
62gerente
615
220k
Google's AI Overviews - The New Search
badams
0
1.6k
Done Done
chrislema
187
17k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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を使ったクラウドのコン ポーネントの開発や、開発チームのマネージメントをしてくれ る仲間を探しています!気軽にお声かけください!