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
SQL Server ベクトル検索
Search
Oda Shinsuke
March 29, 2025
Programming
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SQL Server ベクトル検索
2025/03/29 meetup app @osaka9
https://meetupapp.connpass.com/event/348237/
Oda Shinsuke
March 29, 2025
More Decks by Oda Shinsuke
See All by Oda Shinsuke
SQL Server 2025 最適化されたロック
odashinsuke
0
200
SQL Server 2025 LT
odashinsuke
0
1.1k
型を合わせとくとデータが多くなっても安心
odashinsuke
0
410
Other Decks in Programming
See All in Programming
ChromeでローカルLLM
ryu1013
0
150
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
120
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
990
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
300
GraphQL の onError と Nullability のこれから
quramy
0
130
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
160
Railsバージョンを4倍にした話
optim
0
490
パスワード再設定メールのURLについて知っておこう
uyuki234
0
170
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
4.1k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
830
Featured
See All Featured
Visualization
eitanlees
153
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Code Review Best Practice
trishagee
74
20k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Deep Space Network (abreviated)
tonyrice
0
380
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Scaling GitHub
holman
464
140k
A Soul's Torment
seathinner
8
3.8k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Transcript
SQL Server ベクトル検索 meetup app Osaka@9 2025/03/29 @shinsukeoda
ベクトル検索 Azure SQL Database で public preview SQL Server 2025
からサポート SQL データベース エンジン内のベクター を操作する - SQL Server | Microsoft Learn
ベクトルってなに? 高校数学でやったやつ? 向きと大きさをもってた気がする 矢印みたいなイメージあった 数値の順序付けられた配列
ベクトル データ型 内部的には、JSON で表現した数値の配列 各要素は 単精度(4byte)浮動小数点 配列の最大次元 1998 (1998次元配列まで) 単精度浮動小数点
= float(24) or real create table [テーブル] ( [キー] bigint not null primary key , [ベクトル] vector(3) not null ) ; insert into [テーブル] ([キー], [ベクトル]) values (1, '[0.1, 2, 30]') , (2, '[-100.2, 0.123, 9.876]') ; select * from [テーブル] ベクトル データ型 (プレビュー) - SQL Server | Microsoft Learn
ベクトル 関数 vector_distance 距離計算 (今日はこれの話し) vector_norm ノルム(長さ)計算 vector_normalize 正規化 (指定ノルムで長さ1のベクトル)
ベクター関数 (Transact-SQL) - SQL Server | Microsoft Learn
vector_distance (距離計算) 3種類の計算方法 cosine - コサイン距離 euclidean - ユークリッド距離 dot
– (負の) ドット積 VECTOR_DISTANCE (Transact-SQL) - SQL Server | Microsoft Learn
コサイン距離 1 から コサイン類似度を引いたもの コサイン類似度 = 2つのベクトル間の確 度Θ に対するコサイン 1
- cosΘ 0 ~ 2 の範囲 0:同一のベクトル、2:反対のベクトル
コサイン距離 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘cosine’, ‘[1,0]’,
‘[0,1]’) 90°なので cos90° = 0 1 – cos90° = 1 – 0 = 1
ユークリッド距離 2つのベクトル間の直線距離 √(a1 – b1)^2 + (a2 – b2)^2 +
… + (an – bn)^2 0:同一のベクトル 𝑎1 − 𝑏1 2 + 𝑎2 − 𝑏2 2 + ⋯ + 𝑎𝑛 − 𝑏𝑛 2
ユークリッド距離 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘euclidean’, ‘[1,0]’,
‘[0,1]’) √(1 – 0)^2 + (0 – 1)^2 = √2 √2 = 1.41421356… 1 − 0 2 + 0 − 1 2 = 2
ドット積 ベクトルの大きさ * cosΘ ベクトルの内積 のこと (a1 * b1) +
(a2 * b2) + … SQL Server は では 負のドット積なので、 ((a1 * b1) + (a2 * b2) + …) * -1 最後に -1 掛ける 小さくなるほど、ベクトルが類似している
(負の)ドット積 - 例 (1, 0), (0, 1) の2点のベクトルがあったとして vector_distance(‘dot’, ‘[1,0]’,
‘[0,1]’) ((1 * 0) + (0 * 1)) * -1 0 * -1 = -0
どんな時に使い分ける? コサイン距離 方向性が一緒 (距離がどれだけ離れてても、 方向が一緒なら同じ) ユークリッド距離 単純に距離が近い・遠い 負のドット積 -1 掛けて小さいほどベクトルが似ている
ベクトルの大きさ * cosΘ なので、方向性 と距離が考慮されてそう?
正反対のものと、 同じ方向だけど距離が遠いもの -1 -0.5 0 0.5 1 1.5 2 2.5
3 3.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 軸ラベル 軸ラベル y 線形 (y)
正反対のものと、 同じ方向だけど距離が遠いもの
正反対のものと、 同じ方向だけど距離が遠いもの (-0.5, -0.5) は (0, 0) 挟んで反対だが距 離は近い 向きは反対だが近い
(3, 3) は 向きは同じだが、距離は遠い (0.5, 0.5) から距離が近いけど、真逆の (-0.5, -0.5) の方 が求められている結果? (0.5, 0.5) から距離が遠いけど、向きが同じの (3, 3) の方が 求められている結果? どんな検索をしたいかで変わってくるはず!!
Vectorize (ベクトル化) どんなものでも数値の配列にする テキストでも画像でも動画でもなんでもか んでも数値の配列にする SQL Server だと配列は 1998 次元まで
適当に数値化じゃダメ! 検索の話しで分かると思うけど、この数値 データが大事!
Vectorize (ベクトル化) この数値化で流行ってる AI/ML が使われ る 人がやってもいいけど、量が多いと大変だ し、やる人の感性によってしまう。 ルール決めてやった場合は、ルール通りに しかならないから、漏れるケースは無視さ
れる 絶対者がルールを決めて、ルール外はどうでもい いなら AI/ML じゃなくてもいいはず
感想・疑問 次元が増えた時に、無関係の内容に 0 入れてっ たら、殆どの次元が 0 になって、全然近くない のに近い扱いされない? 単位が違う次元が混じってたら距離での検索ヤ バそう?
1次元は -1.0~1.0の範囲、2次元は、1000, 2000 の単位 単位ベクトル、正規化とか出てくるはず… 多次元とか感覚的には理解できないけど、ちゃ んと計算出来るのは数学スゲー