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
70
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.5k
Elasticsearchを負荷から守るesguard
po3rin
0
230
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
820
eskeeperを使ったファイル定義によるindex管理
po3rin
2
450
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
76
Handling Temporal Query for Health Search with ja-timex
po3rin
3
300
Other Decks in Programming
See All in Programming
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
最新TCAキャッチアップ
0si43
0
190
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
Jakarta EE meets AI
ivargrimstad
0
590
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.8k
Realtime API 入門
riofujimon
0
150
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
CSC509 Lecture 09
javiergs
PRO
0
140
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
190
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
420
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
4 Signs Your Business is Dying
shpigford
180
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Bash Introduction
62gerente
608
210k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
What's new in Ruby 2.0
geeforr
343
31k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
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//