Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NGT-ONNGによる近似最近傍探索
Search
po3rin
May 31, 2021
Programming
0
69
NGT-ONNGによる近似最近傍探索
po3rin
May 31, 2021
Tweet
Share
More Decks by po3rin
See All by po3rin
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
270
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
0
280
検索基盤移行時の思考
po3rin
0
4.2k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
5.4k
Elasticsearchを負荷から守るesguard
po3rin
0
230
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
800
eskeeperを使ったファイル定義によるindex管理
po3rin
2
440
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
73
Handling Temporal Query for Health Search with ja-timex
po3rin
3
300
Other Decks in Programming
See All in Programming
Scan with Decoupled Look-back and Onesweep Radix Sort
shocker_0x15
0
160
Mercari AI/LLM Hackathon TeamBの発表資料
imaikosuke
0
190
CSC509 Lecture 04
javiergs
PRO
0
170
Why I Choose NetBeans for Jakarta EE
ivargrimstad
0
930
メルカリ ハロ アプリの技術スタック
atsumo
2
910
Honoの来た道とこれから
yusukebe
17
2.5k
デバッグの話 / Debugging for Beginners
kaityo256
PRO
8
740
本編では話さない Zig の話
andpad
2
130
Vue.js学習の振り返り
hiro_xre
1
100
Golang と Erlang
taiyow
7
1.8k
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
8
750
Cloud Adoption Framework にみる組織とクラウド導入戦略
tomokusaba
2
690
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
A Tale of Four Properties
chriscoyier
156
22k
A designer walks into a library…
pauljervisheath
202
24k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
Designing for Performance
lara
604
68k
The Cult of Friendly URLs
andyhume
77
6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Rails Girls Zürich Keynote
gr2m
93
13k
Code Review Best Practice
trishagee
64
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
M3 ใݕࡧจಡΈձ #2 hiromu-nakamura @po3rin 3FBEJOHQBQFSl0QUJNJ[BUJPOPG*OEFYJOH#BTFEPOL /FBSFTU/FJHICPS(SBQIGPS1SPYJNJUZ4FBSDIJO)JHI EJNFOTJPOBM%BUBz /(50//(ʹΑΔۙࣅ࠷ۙ୳ࡧ
தଜ߂ ΤϜεϦʔͷ"*ɾػցֶशνʔϜͰݕࡧج൫पΓ Λ୲͍ͯ͠Δɻ(P͕͖ɻ ֤छΞΧϯτQPSJOͰͬͯ·͢ɻ )*SPNV/BLBNVSB
$POUFOUT *OUSPEVDUJPOdϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d /(50//(3FMBUFE8PSL /(50//( ͓·͚
*OUSPEVDUJPO dϕϯνϚʔΫ͔ΒݟΔ"//ͷݱঢ়d
"// ߴ࣍ݩͷϕΫτϧۭؒͰσʔλͷ࠷ۙΛݕࡧ͢Δ͜ͱॏཁͳλεΫͰ͋Δɻ ը૾σʔληοτ͔Βྨࣅͨ͠ը૾Λݟ͚ͭΔ ใݕࡧͰɺςΩετຒΊࠐΈΛ༻ͯ͠ɺྨࣅهࣄΛࢀর͢Δ ಛʹਂֶशϞσϧͷ࣍ݩ૿Ճ͢Δ͕͋ΔͨΊɺඦສΛ͑Δߴ࣍ݩ ϕΫτϧΛݕࡧ͢Δඞཁ͕͋Γɺۙࣅ࠷ۙ୳ࡧ BQQSPYJNBUFOFBSFTU OFJHICPS "//
ݕࡧํ๏ओྗɻ
"// ఏҊ͞Ε͍ͯΔ࠷ۙݕࡧํ๏ଟଘࡏ IOTX GBJTT 'BDFCPPL ONTMJC લճՏ߹͞Μ͕༻
qBOO 0QFO$7Ͱ࣮͞Ε͍ͯΔ &UDʜ ࠷ۙ୳ࡧͷϕϯνϚʔΫΛߦ͏ϓϩδΣΫτʮ#FODINBSLJOHOFBSFTUOFJHICPSTʯ <>Ͱ֤ख๏ΛλεΫ͝ͱʹൺֱՄೳɻ <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
"// ͳʹΒ:BIPP+"1"/ΒʹΑͬͯ/(5ͱ͍͏ͷ͕ੈքτοϓϨϕϧୡͨ͠Β͍͠<> <>IUUQTUFDICMPHZBIPPDPKQFOUSZ
#FODINBSLJOHOFBSFTUOFJHICPST <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
#FODINBSLJOHOFBSFTUOFJHICPST <>IUUQTHJUIVCDPNFSJLCFSOBOOCFODINBSLT
IUUQTBSYJWPSHBCT Αͬͯࠓճͷจ /(5 /FJHICPSIPPEHSBQIBOEUSFF ͷจ
/(50//(3FMBUFE8PSL d/(50//(ొ·ͰͷܦҢΛ͓͑͞Δd
3FMBUFE8PSL ࠷ۙ୳ࡧɺπϦʔϕʔεͱάϥϑϕʔεʹେ͖͘ྨ͞ΕΔɻଠࣈ/(5ʹ࣮͞Ε͍ͯΔΞϧΰϦζϜɻ ˙πϦʔϕʔε LEUSFF "// LEπϦʔʹۙࣅݕࡧΛద༻͢Δํ๏ '-"// ෳͷLEπϦʔ͕ฒߦͯ͠ݕࡧ͞ΕΔϥϯμϜԽ͞ΕͨLEπϦʔ
˙άϥϑϕʔε )/48 ۙࣅۙάϥϑʹϨΠϠʔͷ֓೦Λಋೖ "//( ۙࣅ,//( 1"//( ΫΤϦ࣌ؒΛॖ͢ΔͨΊʹ"//(ͷ֤ϊʔυͷΤοδΛআ͢Δ 0//( ϕϯνϚʔΫτοϓϨϕϧ
"//( ϊʔυʹLݸͷ࠷ۙϊʔυͷ࿈Λߦ͏άϥϑɻ ࿈݁άϥϑΛอূ͠ͳ͍ͷͰ͞Εͨάϥϑ͕ൃੜ͢Δ ਤ ɻ L//( "//(<>ϊʔυͣͭແΤοδͰஞ࣍తʹ࿈݁͢Δ͜ͱͰ࿈݁άϥϑΛอূ͢Δ ਤ ɻ "//(
<>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKUPEQEG
"//(5 ϥϯμϜʹબͨ͠ϊʔυ͔ΒάϥϑΛ୳ࡧ͢ΔͷͰάϥϑ͕େྔͷϊʔυΛ༗͢Δ ߹ʹ୳ࡧίετ͕૿Ճ͢Δɻಛʹ୳ࡧى࣍ୈͰίετ͕Ͷ্͕Δɻ "//(5<>"//(ʹ͓͍ͯ୳ࡧىΛܾఆ͢ΔͷʹEWQUSFF<>Λར༻͢Δ͜ͱʹ ΑΓίετͰۙϊʔυΛ୳ࡧͰ͖Δ ਤ ɻ "//( <>IUUQTTZJNHKQJEPDTSFTFBSDI@MBCBSUJDMFTNJXBTBLJJQTKKOMQEG
"//(5
"//(5 EWQUSFF EZOBNJDWBOUBHFQPJOUUSFF ୳ࡧىΛબͿͨΊ͚ͩʹΘΕΔɻ͜ͷྫͰۭؒશମΛͷಉ ৺ԁɺΦϨϯδͷಉ৺ԁɺ੨ͷಉ৺ԁʹΑΓॱʹׂ͢Δ͜ͱͰ෦ۭؒࡉԽ͠ɺͦͷ෦ۭؒͷแؚؔ Λࣔ͢πϦʔߏΛੜ͢Δɻ͜ΕͰ୳ࡧىΛେ෯ʹߜΓࠐΊΔɻಈతͷߏஙΞϧΰϦζϜޙௐࠪʜ
/(50//( d/(50//(ʹΑΔΤοδௐd
.PUJWBUJPO "//( "//(5ͰΤοδʹΑͬͯ࣍ͷ͕ൃੜ͢Δɻ ೖྗΤοδ͕ۃʹগͳ͍ϊʔυ౸ୡ͢Δ͕֬Լ͕ΔͷͰݕࡧ࿙Ε͢ΔՄೳ Τοδ͕શମతʹগͳ͍ͱԕճΓʹͳΔՄೳੑ͕͋Γɺݕࡧ࿙Ε͢ΔՄೳੑ্͕͕Δ Τοδ͕ଟ͍ͱ୳ࡧ͕࣌ؒ૿͑Δɻ ͭ·Γ ೖྗΤοδͷϊʔυͰҰఆʹ͍ͨ͠ ग़ྗΤοδͷ૿ՃʹΑΔԼ͕ൃੜ͠ͳ͍ൣғͰ֤ϊʔυͷೖྗΤοδΛ૿͢ɻ ͜ΕΒΛϊʔυʹΤοδͷௐʹΑͬͯղܾ͢Δͷ͕/(50//(
0QUJNJ[FE/FBSFTU /FJHICPST(SBQI Ͱ͋Γɺ"//(5ʹΤοδௐύεௐΛ͔͚ͨͷͰ͋Δɻ
EFHSFFBEKVTUNFOUNFUIPET QBUIBEKVTUNFOUNFUIPE /(50//(ͰͭΤοδௐ๏ͱݕࡧ࣌ͷύεௐ๏ΛఏҊ͍ͯ͠Δɻ ੩త࣍ௐ,//(ͷΤοδͱసΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍Λେ·͔ʹௐ͢Δ ੍͖੩త࣍ௐೖग़࣍ΛΑΓਖ਼֬ʹௐ͢Δ ಈత࣍ௐݕࡧ࣌ʹཁٻ͞ΕΔਫ਼͔Βग़࣍Λಈతʹܾఆ͢Δ γϣʔτΧοτΤοδআڈʹΑΔύεௐ ϊʔυͷग़͕࣍ߴ͘ͳΓɺΫΤϦ͕࣌ؒ͘ͳΔͷΛͳΜͱ͔͍ͨ͠
੩త࣍ௐ d,//(ͷΤοδͱసΤοδ͔Β࡞ͬͨάϥϑͰೖग़࣍Λେ·͔ʹௐd ·ͣϊʔυͷೖग़࣍Λେࡶʹἧ͍͑ͨ F@P F@J͕༩͑ΒΕͨ࣌ɺ֤ϊʔυ͔Βڑ͕͍ॱʹ F@Pݸͷग़ྗΤοδ͕બ͞ΕΔɻF@Jݸͷग़ྗΤοδ ͍ॱʹબ͞ΕΔɻ બΕͨF@Pݸͷग़ྗΤοδ܈ͦͷ··࠾༻͠ɺF@J ݸͷग़ྗΤοδ܈શͯసͯ͠ೖྗΤοδͱͯ͠࠾ ༻͢Δɻ
ࠨਤL F@P F@Jͷ࣌Λࣔ͢ɻେ·͔ʹFP FJʹ͕࣍ἧ͑ΒΕ͍ͯΔɻ จͰ͜ΕΛௐάϥϑͱ໋໊͍ͯ͠Δɻ ௐ ݸͷΤοδ eo ݸͷసΤοδ ei
੍͖࣍ௐ தଜ͕·ͩཧղͰ͖ͯͳ͍આ dೖग़࣍ΛΑΓਖ਼֬ʹௐ͢ΔͨΊͷ੍͖ͷ࣍ௐd ઌ΄Ͳͷํ๏ͩͱେࡶʹ࣍ΛௐͰ͖Δ͕ɺҰ෦ͷϊʔυߴ ͍ग़࣍Λ͕࣋ͭ͋Δɻͦ͜Ͱɺग़ࣗΛ૿͞ͳ͍Α͏ʹೖ ग़࣍Λௐ͢Δํ๏͕ՃͰఏҊ͞Ε͍ͯΔɻ ઌ΄ͲͷΞϧΰϦζϜͰF@PͰੜ͞ΕΔௐάϥϑ(@UΛੜ ͢Δɻ(@JΛߏஙதͷάϥϑ(@Fͷసஔάϥϑͱ͢Δɻ (@Uͷϊʔυͷग़࣍ͷঢॱͰͭͷϊʔυ͕બ͞Εɺͦͷ
ϊʔυͷྡϊʔυͷ͍ۙॱͦΕͧΕʹ͍ͭͯɺ(@Jͷྡϊʔυ ͷग़͕࣍F@JΑΓ͘ɺ(@Fͷϊʔυͷग़͕࣍F@PΑΓ͍ ߹ɺྡϊʔυͱͷΤοδ͕(@FʹՃ͞ΕΔɻ (@FϊʔυʹF@PݸͷΤοδؚ͕·ΕΔ·ͰɺݩͷάϥϑͷΤοδ ͕ϊʔυʹՃ͞Ε·͢ɻ
ௐ Gt Ge Gi Gt Ge Gi F@J F@P L
Ge TUBHF݁Ռ ˔ ˔ ˔ ࠷ޙͷϊʔυ·Ͱॲཧ ੍ݶ͖੩త࣍ௐTUBHF ඞͣ͠࿈άϥϑʹͳΒͳ͍ʁ
Ge Ge G 4UBHF ੍ݶ͖੩త࣍ௐTUBHF F@J F@P L ඞͣ͠࿈άϥϑʹͳΒͳ͍ʁΜʁʁ ࠓޙཁௐࠪ
γϣʔτΧοτΤοδআڈʹΑΔ ύεௐ EWQUSFFΛ༻ͯ͠ΫΤϦʹ΄΅ྡ͢ΔϊʔυΛ୳ ࡧىͱ͍ͯ͠ΔͨΊɺγϣʔτΧοτΤοδແବ ʹग़࣍Λ૿͍ͯ͠Δ߹͕͋Δɻ ͜ͷΑ͏ͳΤοδΛআ͢ΔͱΫΤϦ࣌ؒΛॖͰ͖ Δɻ ସύε͕ͭҎ্ͷϊʔυͰߏ͞Ε͍ͯΔ߹ ࠨ ਤB
Λআ͠Α͏ͱ͢ΔͱΫΤϦ࣌ؒͷํ͕େ͖͘ͳ ΔͨΊͭͷϊʔυͰߏ͞Ε͍ͯΔύεͷΈ͕আ͞ ΕΔ ࠨਤCͷ߹ ɻ γϣʔτΧοτΤοδ͕ସύεͷΤοδΑΓ͍ ߹ ࠨਤD ͷΑ͏ͳ߹আ͞Εͳ͍ɻ
ಈత࣍ௐ dݕࡧ࣌ʹཁٻ͞ΕΔਫ਼͔Βग़࣍Λಈతʹܾఆ͢Δd ߴਫ਼͕ඞཁͳ߹ߴ͍ग़͕࣍ඞཁɻҰํͰ ͕༏ઌ͞ΕΔ߹ߴ͍ग़࣍ෆཁɻ͕ͨͬͯ͠ɺ ग़࣍ݕࡧ࣌ʹಈతʹௐͰ͖Δͱخ͍͠ɻ ୳ࡧ࣌ʹߟྀ͢Δग़࣍ਫ਼ௐύϥϝʔλЏͷؔ Ͱ͋ΔFQΛೖྗͱͯ͠ௐ͢Δɻ ਫ਼ௐύϥϝʔλͷЏ୳ࡧܘʹӨڹΛ༩͑ Δɻͭ·Γ,OO4FBSDIͷਫ਼Λೋͭͷ؍Ͱܾఆ͢ Δɻ
74NFUIPET %"͕࠷ڑܭࢉ͕গͳ͘ࡁΉɻ σʔληοτʹΑͬͯ4"Ͱ͑͞΄΅࠷ྑͷάϥϑߏΛߏஙͰ͖Δɻ 4"$ɺ(*45ͷΑ͏ͳߴ࣍ݩͷσʔληοτʹޮՌత͔͠Εͳ͍ɻ 4"ͱ4"$ͷ࣍%"ͷ࣍ΑΓগͳ͍ͨΊϝϞϦ༻ྔͷݮΛ༏ઌ͢Δඞཁ͕͋Δ߹ɺ4"·ͨ 4"$͕બࢶͱͳΔɾ
3FTVMUT σʔληοτ͝ͱͷ֤छ࠷ۙ୳ࡧख๏ൺֱ
ग़࣍ΛݮΒ͢ɻೖ࣍Ұఆʹ͢ΔΤοδௐͱ͍͏ΞΠσΞ໘ന͍ɻ ͨͩಈతͳߋ৽ɺআΛߟྀͯ͠ͳ͍ͷͰɺΞϓϦέʔγϣϯͰ͏ͷෆ ͖ɻ੩తͳݕࡧʹ͑Δ͚Ͳͦ͏ͳΔͱ͍Ͳ͜Ζ͕ɻɻ 7BME/(50//(αϙʔτ͠ͳ͍ͱݴ͍ͬͯΔɻͦΓΌͦ͏ɻ Γੈ)/48࣌ͳͷ͔ ॴײ
͓·͚ͱิ
<>IUUQTHJUIVCDPNWEBBTWBME 7BME<>/(5ϥΠϒϥϦΛͬͨࢄϕΫτϧݕࡧΤϯδϯɻLTGSJFOEMZͰɺ )FMNͰҰܸͰσϓϩΠ͕Մೳɻ௨৴H31$Λ͍ͬͯΔɻ͔͠(PΧοέΣɻ ΫϥΠΞϯτϥΠϒϥϦఏڙ͞Ε͓ͯΓ1ZUIPO (P /PEFKTͳͲʹରԠ͍ͯ͠Δɻ
ͨͩ7BMEͩͱ/(5"0//(͔͠ରԠͯ͠ͳ͍͍͘͞ɻɻɻ ࠶ߏஙͱࢄΤϯδϯ͕ͦ͠͏ͩ͠ɻɻɻ OHUίϚϯυΤοδௐܥΞϧΰϦζϜ໌ࣔతʹ࠶ߏஙΛୟ͘ܗࣜʹͳ͍ͬͯΔɻ ϕϯνϚʔΫݟΔͱΤοδௐ͕ಈతʹͰ͖ͳ͍ͱ·ͩ)/48ܥʹ܉ഋ্͕͕Γͦ͏ɻ
ͻΌʔʔʔ
͓·͚ େ·͔ͳ੩తͳ࣍ௐํ๏ͷग़ॴ ͳͥ͜ͷΞΠσΞ͕ग़ͯ͘Δ͔ɻ
͓·͚ σʔληοτ͝ͱͷग़࣍ͷฏۉ
શͯΛաڈʹ͢Δ4DB//