
- TOP
- ã¿ã°äžèЧ
- ã¢ã«ãŽãªãºã
ã¢ã«ãŽãªãºã
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
RAGãšJevã§ããã¯ãã«DBã«æ ¹æ ãšãªãçãããªããããšãèŠåããä»çµã¿ãäœã£ã話 ã¯ããã« ããã«ã¡ã¯ã1ãæéã®ã€ã³ã¿ãŒã³ã§ããµãŒããŒãµã€ãïŒGoïŒãæ
åœããæ©æ¬ã§ãã ã€ã³ã¿ãŒã³ã§ã¯ãAIãšãŒãžã§ã³ãã®æ©èœè¿œå ã®èšèšã»å®è£
ã«æºãããŸããããã®èšäºã§ã¯ããã®äžã§ãRAGïŒRetrieval-Augmented GenerationïŒã®æ€çŽ¢ã®éšåã«çŠç¹ãåœãŠãŸããRAGã¯ã質åã«é¢ä¿ããææžãæ¢ããŠLLMã«æž¡ãããã®ææžãããšã«åçãäœæããä»çµã¿ã§ããããã§ã¯ããªãã·ã¥ãããã³ã®æ
å ±ãæ€çŽ¢ããAIã®åçã®æ ¹æ ãšããŠäœ¿ãããã©ãããæ€èšããŸããã äœã£ãŠã¿ãŠäžçªé£ããã£ãã®ã¯ãããã¯ãã«DBã«æ ¹æ ãšãªãçãããªãããšãã©ã®ããã«èŠåããããã§ãããé¢ä¿ã®èãæ
å ±ãLLMã«æž¡ããŠããŸããšãLLMã¯ãããããšã«ãã£ãšãããããæ£ç¢ºã§ã¯ãªãåçãçæããŠããŸãå¯èœæ§ããããŸãããã£ãŠãã¯ãã«DBã«æ ¹æ ãšãªãæ
å ±ãç¡ãå Žåã¯ãLLMã«åçãããªãããã«ããå¿
èŠããããŸãã ãã®èšäºã§ã¯ã次ã®2ã€ã®ãããã¯ã«çµããŸãã HYBRIDãšANNãšãã2ã€ã®æ€çŽ¢ãçµã¿åãããŠãåè£ãçµãä»çµã¿ çµã£ãåè£ã質åã«çããŠãããããTypeSafeã®AIã¢ãã«Jevã§ææžããšã«å€å®ããä»çµã¿ HYBRIDãšANNã¯ãã¯ãã«DBã«å¯Ÿããæ€çŽ¢æ¹åŒã§ãå
·äœçãªã¢ã«ãŽãªãºã ã¯åŸè¿°ããŸãã æåŸã«ããããã®ææ³ã«ã€ããŠããŒã«ã«ã§èšæž¬ããçµæãèšè¿°ããŠããŸãããªãã以äžã«åºãŠãã質åãææžã®äŸã¯ã説æã®ããã«äœã£ããã®ã§ãã å
šäœã®æµã åæãšããŠããã¯ãã«DBãšã€ã³ããã¯ã¹ã¯Databricksã®AI SearchãšãããµãŒãã¹ã«ãŠãã¹ããããŠãããããã¯ãšã³ããµãŒããŒãããã¯ãã«DBã«å¯ŸããŠçŽæ¥ãªã¯ãšã¹ããããããªåœ¢åŒãåã£ãŠããŸãã ãŸãã€ã³ããã¯ã¹ã¯ãææžãæ®µèœã¬ãã«ã®åäœïŒãã£ã³ã¯ïŒã«åããäžã§åã蟌ã¿ãã¯ãã«ãçæããŠããŸãã åŠçã®å
šäœåã¯ä»¥äžã®éãã§ãã æ€çŽ¢æ¹åŒã決ãããŸã§ ã€ã³ã¿ãŒã³ã§äžçªãããããæããã®ã¯ããã®æ€çŽ¢æ¹åŒã決ãããšããã§ãããèªåã®èããç¹ã«å€ãå
¥ããããéšåã§ãããã®ã§ãã©ãèããŠä»ã®åœ¢ã«èœã¡çããã®ããæžããããšæããŸããæ€çŽ¢æ¹åŒã¯äœåºŠãå€ãããHYBRIDããå§ããŠANNã«ç§»ããæåŸã«äž¡æ¹ãçµã¿åããã圢ã«ãªããŸããã æ¬²ããã£ãåè£ äŸãã°ããã³ããŒã°ã®çŒãæéã¯ïŒããšèããããšããŸããåè£ã«æ¥ãŠã»ããã®ã¯ãããã³ããŒã°ã®äœãæ¹ãã®ãããªãã³ããŒã°ã«ã€ããŠã®ææžã§ãããé¶ããèã®ãœããŒã®çŒãæéãã®ãããªãå¥ã®æçã®çŒãæéã®ææžã§ã¯ãããŸããã ãã¯ãã«ã®è¿ãã ãã§æ¢ããšãå¥ã®æçã®ææžã§ã質åãšåãããçŒãæéãã«ã€ããŠæžãããŠããã°äžäœã«æ¥ããããããããŸãããããã§æåã¯ãHYBRIDã䜿ãããšãèããŸãããHYBRIDã¯ãã¯ãã«ã®è¿ããšããŒã¯ãŒãã®äžèŽãåãããŠäžŠã¹ãã®ã§ãããã³ããŒã°ããšããèšèãå
¥ã£ãææžãäžäœã«æ¥ããããèãããŠãã察象ãå€ãã«ãããªããŸãã HYBRIDåäœã§ã¯æ ¹æ ãšãªãåçããããã倿ã§ããªã HYBRIDã䜿ãå ŽåãscoreãéŸå€ããäœããã°ãçããç¡ãããšå€å®ããã€ããã§ããããšããããèšèšãè©°ããäžã§ãHYBRIDã§ã¯ãã®å€å®ãé£ããããšã«æ°ã¥ããŸããã HYBRIDã¯ããã¯ãã«æ€çŽ¢ãšããŒã¯ãŒãæ€çŽ¢ã®çµæããReciprocal Rank FusionïŒRRFïŒã§1ã€ã«ãŸãšããæ€çŽ¢ã§ããDatabricksã®AI Searchã§ã¯ããã£ã³ã¯xã«ã€ããŠæ¬¡ã®å€ãèšç®ããŸãïŒrankã¯ãããããã®æ€çŽ¢ã§ã®xã®é äœã§ã1äœã1ãšæ°ããŸãã60ã¯RRFã®å®æ°kã§ãAI Searchã§ã¯60ã§ãïŒã AI Searchãè¿ãscoreã¯ããã®å€ãåãããæå€§å€ã§å²ããæå€§ã1ã«ãªãããã«ãããã®ã§ããäžå®ã®å€ã§å²ãã ããªã®ã§ãscoreãé äœã§æ±ºãŸãããšã¯å€ãããŸããã ãã®ããã«ãHYBRIDã®scoreã¯2ã€ã®æ€çŽ¢ã® é äœ ããèšç®ããã®ã§ãæ€çŽ¢èªãšãã£ã³ã¯ãã©ãã ãè¿ããã®ç®å®ã«ã¯ãªããŸãããã€ã³ããã¯ã¹ã®ææžãã©ãã質åãšé¢ä¿ãªããŠããäžäœã®ææžã«ã¯ãé äœã«å¿ããé«ãscoreãä»ããŸãããã®ããscoreãèŠãŠããçãã®ããææžãããã®ããé¢ä¿ã®ãªãææžããç¡ãã®ããåºå¥ã§ããŸããã ANNãšãèŠåºããè¶³ããåã蟌㿠次ã«ãANNïŒãã¯ãã«ã®è¿ãã ãã§æ¢ãæ€çŽ¢ïŒã«åãæ¿ããŸãããAI Searchã®ANNã¯ãæ€çŽ¢èªã®ãã¯ãã«qãšãã£ã³ã¯ã®ãã¯ãã«xã®è·é¢ïŒãŠãŒã¯ãªããè·é¢ïŒãããæ¬¡ã®åŒã§scoreãèšç®ããŸãã âq â xâ ã¯qãšxã®ãŠãŒã¯ãªããè·é¢ã§ããè·é¢ã0ãªãscoreã¯1ã«ãªããé ãã»ã©å°ãããªããŸãã䜿ã£ãŠããOpenAIã®åã蟌ã¿ã¯é·ã1ã«æ£èŠåãããŠããã®ã§ãè·é¢ã¯æå€§ã§ã2ã«ãªããå®éã®scoreã¯0.2ã1ã®éã«åãŸããŸãã HYBRIDã§ã¯ãã©ã®ææžãé¢ä¿ãªããŠãäžäœã«é«ãscoreãä»ããŸãããANNã§ã¯ãã©ã®ãã£ã³ã¯ãé ããã°scoreãäœããŸãŸã§ããANNã®scoreã¯æ€çŽ¢èªãšãã£ã³ã¯ã®è¿ããã®ãã®ãªã®ã§ãéŸå€ãä»ããããŸããæ®ã£ãå¿é
ã¯ãèãããŠãã察象ãå€ãããšã§ãããã®ç¹ãã€ã³ããã¯ã¹ã®åŽã§è£ãããã«ãåã蟌ãæã工倫ããŸããã RAGã§ã¯ãææžãæ®µèœã®ãããªå°ããªåäœïŒãã£ã³ã¯ïŒã«åãããã£ã³ã¯ããšã«ãã¯ãã«ã«ããã®ãäžè¬çã§ããææžå
šäœã1ã€ã®ãã¯ãã«ã«ãããšããã®ãã¯ãã«ã¯ãããããªé¢å¿äºãå«ã¿ã现ãã質åã«å¯Ÿå¿ããããªã£ãŠããŸããŸãã ãã ããã£ã³ã¯ã«åãããšãä»åºŠã¯æèãæãèœã¡ãŸããææžã®äžã§ã¯ã¿ã€ãã«ãèŠåºããäœã«ã€ããŠæžãããŠãããã瀺ããŠããŸãããæ®µèœã ããåãåºããšããã®æããããç¡ããªããŸããäŸãã°ãæ¬¡ã®æ®µèœããããšããŸãã äžç«ã§ 5 åã»ã©çŒããè£è¿ããŠãµããããŸãã ãã®æ®µèœã ãã§ã¯ãäœãçŒãã®ããåãããŸãããåãææžã®ã¿ã€ãã«ãããã³ããŒã°ã®åºæ¬ã®äœãæ¹ãã§ã段èœããçŒãæ¹ããšããèŠåºãã®äžã«ããã°ãããã³ããŒã°ã¯äžç«ã§5åã»ã©çŒãããšããå
容ã ãšåãããŸããããæ®µèœã ãããã¯ãã«ã«ãããšãããã³ããŒã°ãããçŒãæ¹ãã§èãããŠããã®æ®µèœã¯ãããããªãã§ãããã ããã§ãåã蟌ãæã«ã¯ããã£ã³ã¯ã®æ¬æã®åã«ãææžã®ã¿ã€ãã«ãšããã®ãã£ã³ã¯ãå±ããèŠåºããã€ãªããŠå
¥ããŸããã ææžã®ã¿ã€ãã« / èŠåºã / ãã£ã³ã¯ã®æ¬æ èŠåºããäœéå±€ãããææžã§ã¯ããã£ã³ã¯ã®ããäžã«ããèŠåºãã ãã§ãªããããããäžã®éå±€ã®èŠåºããŸã§ã€ãªããŸããããäžã®èŠåºãã ãã§ã¯ãäžã®éå±€ã瀺ãæèïŒãäœãæ¹ããªã®ããã¢ã¬ã³ãžããªã®ãïŒãæãèœã¡ãããã§ãã HYBRIDãšANNã®äžŠè¡ ãã ãèŠåºããè¶³ããŠããANNãèŠãŠããã®ã¯ãããŸã§ãã¯ãã«ã®è¿ãã§ããåºæã®æçåãç¥èªã®ããã«ãèšèããã®ãŸãŸäžèŽãããã©ãããæ±ºãæã«ãªã質åã§ã¯ãè¿ãã ãã ãšã䌌ã話é¡ã®å¥ã®ææžãäžäœã«æ¥ãããããæ®ããŸãããäžæ¹ã§ããçããç¡ãããèŠåããããã®éŸå€ã«ã¯ãè¿ããã®ãã®ã衚ãANNã®scoreãèŠããŸãã ããã§ãèªåãåºããæ¡ãããšã«ããŒã ã§çžè«ããŠã2ã€ãçµã¿åãããåœ¢ã«æ±ºããŸãããäžŠã¹æ¿ãã¯ããŒã¯ãŒãã®äžèŽã䜿ããHYBRIDã«ãæããã«é ãåè£ãéŸå€ã§èœãšãã®ã¯è¿ããã®ãã®ãscoreã§è¿ãANNã«ä»»ããŸããã€ã³ããã¯ã¹ã«å
¥ããèŠåºãã®å·¥å€«ã¯ããã®ãŸãŸæ®ããŠããŸãã å
·äœçã«ã¯ã2ã€ã䞊è¡ã«åãåãããHYBRIDã®çµæã®ãã¡ãANNã®éŸå€ãéã£ããã£ã³ã¯ãæã€ææžã®ãã®ã ããæ®ããŸããæ¬¡ã®ã³ãŒãã¯ã説æã®ããã«ç°¡ç¥åãããã®ã§ãã // HYBRID ãš ANNïŒéŸå€ã€ãïŒã䞊è¡ã«åãåããããçæ¹ã倱æããããããçæ¹ãæ¢ãã var annHits, hybridHits []*Hit g, gctx := errgroup.WithContext(ctx) g.Go( func () (err error ) { annHits, err = index.Query(gctx, annQuery); return }) g.Go( func () (err error ) { hybridHits, err = index.Query(gctx, hybridQuery); return }) if err := g.Wait(); err != nil { return nil , err } // annQuery ã«éŸå€ãä»ããŠããã®ã§ãannHits ã«ã¯éŸå€ãéã£ããã£ã³ã¯ã ããå
¥ã£ãŠããã // ãã®ãã£ã³ã¯ãæã€ææžããè¿ãããšã¿ãªã near := map [ int64 ] struct {}{} for _, h := range annHits { near[h.DocID] = struct {}{} } // HYBRID ã®çµæã¯ãè¿ãææžã®ãã®ã ããæ®ãïŒäžŠã³é 㯠HYBRID ã®ãŸãŸïŒ hits := make ([]*Hit, 0 , len (hybridHits)) for _, h := range hybridHits { if _, ok := near[h.DocID]; ok { hits = append (hits, h) } } ææžã®åäœã§ç
§ããåãããŠããã®ã¯ãANNãšHYBRIDã§ã¯ãåãææžã§ãå¥ã®ãã£ã³ã¯ãè¿ã£ãŠããããšãããããã§ãã èªåã§äœã£ããã¯ãã«ãå
¥ããã€ã³ããã¯ã¹ã§ãHYBRIDã䜿ãããã¯ãDatabricksã®ããã¥ã¡ã³ãããã¯åãããªãã£ãã®ã§ãããŒã«ã«ã§è©ŠããŠåãããšã確ãããŸããããã ãå°æ°ã®è³ªåã§ANNã ãã®å Žåãšæ¯ã¹ããšãããæçµã®çµæã«ã¯ã»ãšãã©å·®ãåºãŸããã§ããïŒåŸã®ãããŒã«ã«ã§è©Šããçµæãã§è©³ããèšè¿°ããŠããŸãïŒãHYBRIDãè¶³ãã广ã¯ãŸã èšãåããªãã®ã§ãèšå®ã§ANNã ãã®åœ¢ã«ãåãæ¿ããããããã«ããŸããã ææžããšã®ãŸãšã ã€ã³ããã¯ã¹ããè¿ã£ãŠããã®ã¯ãã£ã³ã¯ã®åäœã§ããããã§ãåãææžããæ¥ããã£ã³ã¯ã1ã€ã®åè£ã«æããææžã®scoreã¯ããã®ææžã®ãã£ã³ã¯ã®ïŒHYBRIDã®ïŒscoreã®æå€§å€ã«ããŸãããã®scoreã¯åè£ã䞊ã¹ãé çªã«ã ã䜿ããäžäœ10ææžãå€å®ã«ãããŸããå€å®ãéã£ãææžãããããã®é çªã®ãŸãŸäžäœ3ææžãéžã³ãŸãã åã話é¡ã ãçããŠããªãææž ãããŸã§ã§ãæããã«æå³ãç°ãªãåè£ã¯èœãšãããšãã§ããŸãã ãã ãåã話é¡ã ã質åã®åçã«ã¯ãªããªãææžãå®å
šã«èœãšãããšã¯ãŸã ã§ããŠããŸããã äŸãã°ããã³ããŒã°ã®çŒãæéã¯ïŒããšèãããã€ã³ããã¯ã¹ã«ã¯ããã³ããŒã°ã®ç±æ¥ãã玹ä»ããææžãããªããšããŸãããã®ææžã¯çŒãæéã«ã¯çããŠããŸãããããã³ããŒã°ã«ã€ããŠæžãããŠããã®ã§ããã£ã³ã¯ã®ãã¯ãã«ã¯æ€çŽ¢èªã®ãã¯ãã«ã«è¿ããªããŸããANNã®éŸå€ãå³ããããã°èœãšãããããããŸãããããããããšä»åºŠã¯ãçããŠããææžãŸã§èœã¡ãŠããŸããŸãã èããæ¡ã¯æ¬¡ã®3ã€ã§ããã æ¡ çµè« çç± ANNã®éŸå€ãå³ãããã èŠéã çããŠããææžãŸã§èœã¡ããéŸå€ã ãã§ã¯ãåã話é¡ã ãçããŠããªãææžãåããããªã 質åãšææžã®äž»é¡ãäžèŽããããèŠã èŠéã äž»é¡ãäžèŽããŠããŠããèãããããšïŒçŒãæéïŒãæžãããŠãããšã¯éããªã ææžããšã«AIã¢ãã«ã§å€å®ãã æ¡çš ãã®ææžã¯ãã®è³ªåã«çããŠãããããçŽæ¥èãã æçµçã«ããŒã ã§æ±ºããã®ã¯ãANNã®éŸå€ã§æããã«é ããã®ãèœãšããæ®ã£ãäžäœ10ææžãAIã¢ãã«ã§å€å®ãã圢ã§ãã åŸæ¥ã®LLMã§ã¯æšè«é床ã«å°ãªããã圱é¿ãåºãã®ãæžå¿µã ã£ãã®ã§ãããJevã䜿çšããã°æ¯èŒç圱é¿ãå°ãªãå®è£
ã§ãããšæããä»å詊ããŠã¿ãããšã«ãªããŸããã Jevã§ææžããšã«å€å®ãã Jevãšnoulå å€å®ã«ã¯TypeSafeã®Jevã䜿ããŸãããJevã¯åŸæ¥ã®LLMã®ãããªããã¹ãçæãããã®ã§ã¯ãªããé«éãã€åå®å
šãªããŒã¿æ§é ãåºåããããšã«ç¹åããæ°ããAIã¢ãã«ã§ããä»åã¯Cloudflareã®Workers AIã®APIããåŒã³ã ããŠããŸãã Jevã«æž¡ãåãïŒ questions ïŒã®åã«ã¯ããã€ããããä»å㯠noul ãéžæããŸããã noul ã¯ãtrueãšfalseã®åºæºãæž¡ããšãtrueã«åœãã確çã0ã1ã®æ°ã§è¿ããŸããçããŠãããã©ããã確çã§åãåããã®ã§ãå€å®ã®éŸå€ãåŸãã調æŽã§ããŸãã å€å®ã«æž¡ããã® 1ææžããšã«ã次ã®åœ¢ã§ãªã¯ãšã¹ããéããŸãïŒæèšã¯ç°¡ç¥åããäžè¬çãªèšãæ¹ã«çŽããŠããŸãïŒã { " model ": " typesafe/jev ", " input ": { " state ": " 質å: ãã³ããŒã°ã®çŒãæéã¯ïŒ \n ã¿ã€ãã«: âŠâŠ \n\n [倧èŠåºã / äžèŠåºã] \n æ¬æã®æ®µèœâŠâŠ \n\n [倧èŠåºã / äžèŠåºã] \n æ¬æã®æ®µèœâŠâŠ ", " questions ": { " answers_question ": { " type ": " noul ", " instructions ": " You decide whether the blocks in the state answer the user's question. ... Use the headings only to understand where each block sits; do not count a heading alone as an answer. ", " criteria ": { " true ": " The text of the blocks alone answers the question, at least in part. ", " false ": " The blocks are about the same topic but do not answer the specific thing that was asked, or they are about something else. " } } } } } state ã«å€å®ã®ææïŒè³ªåãšãèŠåºãä»ãã®ãã£ã³ã¯ïŒãã questions ã«äœãå€å®ãããããå
¥ããŸãã 工倫ããã®ã¯æ¬¡ã®4ç¹ã§ãã æž¡ãã®ã¯ããã®ææžã®ãã£ã³ã¯ã®ãã¡ãæ€çŽ¢ã®scoreãé«ãäžäœ3ã€ã ãã§ããææžå
šäœãæž¡ããšé·ããªããå€å®ãé
ããªãããã§ããçããæžãããæ®µèœã¯è³ªåãšå
容ãè¿ãã®ã§ãäžäœ3ã€ã«å
¥ã£ãŠããã¯ãã ãšèããŸãã ãã£ã³ã¯ã«ã¯èŠåºããä»ããŠæž¡ããŸãããèŠåºãã¯ãã®æ®µèœãææžã®ã©ãã«ãããã瀺ãæããããšããŠã ã䜿ããããæç€ºã«æžããŸãããäŸãã°èŠåºãã«ãçŒãæéããšãã£ãŠããæ¬æã«çŒãæéãæžãããŠããªããã°ãçããŠãããšã¯æ°ããŸãã falseã®åºæºã«ã¯ããåã話é¡ã ããèãããããšã«ã¯çããŠããªããå Žåãã¯ã£ããæžããŸãããANNã®éŸå€ïŒãã¯ãã«ã®è¿ãïŒã§èœãšããã«æ®ãã®ã¯ããŸãã«ããããææžã ããã§ã åºã質åã¯å¥ã«æ±ããŸããããã³ããŒã°ã«ã€ããŠæããŠãã®ãããªè³ªåãªãããã³ããŒã°ã説æããŠããææžã¯çããŠãããšæ°ããããšæç€ºã«æžããŸããããããç¡ããšãåºã質åã§ã¯ãå
·äœçãªããšã«çããŠããªãããšããŠèœã¡ãããŸãã è¿ã£ãŠãã確çãå€å®ã®éŸå€ïŒä»ã¯ä»®ã§0.5ïŒä»¥äžãªããçããŠãããšããŸãã ããŒã«ã«ã§è©Šããšãåãææžã§ãANNãšHYBRIDã§ã¯åœãããã£ã³ã¯ãéããå€å®ã«æž¡ã3ãã£ã³ã¯ãå€ããææžã58ä»¶ãããŸããããããã®ææžã§ãANNã ãã®ãšããšHYBRIDïŒANNã®ãšãã®Jevã®ç¢ºçã®å·®ã¯ãäžå€®å€ã§0.01ã§ãããæž¡ããã£ã³ã¯ãå€å°å€ãã£ãŠããå€å®ã¯ã»ãšãã©å€ãããªãããã§ãããã ããå·®ãæå€§ã§0.61éãããã®ãããã0.5ããŸããã§ãéããã©ãããéã«ãªã£ããã®ã2ä»¶ãããŸããã 䞊è¡å€å®ãšããçŽã 10ææžã¯äžŠè¡ããŠå€å®ããŸãã1ææžãã€é çªã«åŒã¶ãšãåŸ
ã¡æéãææžã®æ°ã ãç©ã¿éãªãããã§ããã©ãã1ã€ã®å€å®ã§ãšã©ãŒãèµ·ããŠãããã®ææžãå€å®ã§ããªãã£ããã®ãšããŠæ±ãã ãã§ãã»ãã®ææžã®å€å®ã¯ãã®ãŸãŸç¶ããŸããååŠçã®HYBRIDãšANNã®åãåããã§ã¯ãçæ¹ã倱æãããäž¡æ¹ãæ¢ããerrgroupã䜿ããŸããããããã§ã¯1ã€ã®å€±æã§ã»ããæ¢ããããªãã®ã§ãsync.WaitGroupã䜿ã£ãŠããŸãã // 1 ææžã®å€å®çµæãå€å®ã§ããªãã£ããšã㯠Err ã«å
¥ããä»ã®ææžã¯æ¢ããªã type Verdict struct { Probability float64 // ãçããŠãããã®ç¢ºç Err error } // ææžããšã®å€±æã¯ Verdict.Err ã§è¿ãã®ã§ãããã§ã¯åžžã« nil ãè¿ã func (j *JevJudge) Judge(ctx context.Context, query string , docs []*Candidate) ([]*Verdict, error ) { verdicts := make ([]*Verdict, len (docs)) var wg sync.WaitGroup for i, d := range docs { wg.Go( func () { // Go 1.25 ã® sync.WaitGroup.Go p, err := j.judgeOne(ctx, query, d) verdicts[i] = &Verdict{Probability: p, Err: err} }) } wg.Wait() return verdicts, nil } Jevã®å€å®1åã«ãããæéã¯äžå€®å€ã§247 msã§ããã䞊è¡ã«ããã®ã§ãå€å®ã®æ®µéã¯æ°çŸmsã§çµãã£ãŠããŸãã å€å®ã§ãšã©ãŒãèµ·ããææžã¯ãæåŸã«éžã¶3ææžããŸã ãããããæéãæ®ã£ãŠãããšãã«éãã1åã ãå€å®ãããçŽããŸããäžæ¹ãçããŠããªããšå€å®ãããææžã¯ããçŽããŸããããšã©ãŒãšéã£ãŠãå€å®ãã®ãã®ã¯ã§ããŠããããã§ãã å€å®ã®çµæãããè¿ããã®ã¯æ¬¡ã®3éãã«æ±ºãŸããŸãã å€å®ã®çµæ è¿ããã® çããŠããææžã1ã€ä»¥äžãã ãã®ææžïŒäžäœ3ã€ãŸã§ïŒ ãã¹ãŠã®ææžããçããŠããªãããšå€å®ããã ãçããç¡ãã çããŠããææžãç¡ããå€å®ã§ããªãã£ãææžãæ®ã£ã ãšã©ãŒ 3ã€ç®ããçããç¡ããã«ããªãã®ã¯ãå€å®ã§ããªãã£ãææžã«çããæžãããŠãããããããªãããã§ãããã®å Žåã«ãçããç¡ãããšè¿ããšãå®éã«ã¯çããããã®ã«ç¡ããšäŒããŠããŸããŸãã éŸå€ã®æ±ºãæ¹ãšãããŒã«ã«ã§è©Šããçµæ ANNã®éŸå€ãšå€å®ã®éŸå€ã¯ãä»ã¯ä»®ã®å€ã§ããã©ã¡ãã®å€ã«ãåããã¬ãŒããªãããããŸããå³ãããããšãçããç¡ã質åã§ã¯æ£ãã0ä»¶ã«ã§ãã代ããã«ãçãããã質åã§ã¯æ£ããææžãŸã§èœãšããŠããŸããŸãã ãã®ãããè©äŸ¡ã§ã¯æ¬¡ã®2ã€ãåããŠæž¬ããŸãã ææš æž¬ããã® æ€çŽ¢ã®æ£ãã æ£è§£ã®ææžãäžäœ3ææžã«å
¥ãã çããç¡ã質å çããç¡ã質åã§ãæ£ãã0ä»¶ã«ãªãã RAGã®è©äŸ¡ã§ã¯ãLLMãæž¡ãããææžã®ãšããã«çããæžããŠããããæž¬ãããšããããããŸãããã ãããã ãã§ã¯æ€çŽ¢ã®å€±æãèŠããŸããã äŸãã°ããã³ããŒã°ã®çŒãæéã¯ïŒãã«å¯ŸããŠãæ€çŽ¢ãé¶ããèã®ãœããŒã®ææžãæž¡ããŠããŸã£ããšããŸããLLMããã®ææžã®ãšããã«ãçé¢3åãã€ã§ãããšçããã°ãææžã«å¿ å®ãªã®ã§ããã®æž¬ãæ¹ã§ã¯æºç¹ã«ãªããŸãããããããŠãŒã¶ãŒãèããã®ã¯ãã³ããŒã°ã®çŒãæéãªã®ã§ãçããšããŠã¯ééãã§ãããã®ãããæ€çŽ¢ãæ£ããææžãéžã¹ãŠãããïŒäžã®è¡šã®ãæ€çŽ¢ã®æ£ãããïŒã¯ãå¥ã«æž¬ãå¿
èŠããããŸãã è©äŸ¡ã«äœ¿ã質åã«ã¯ãçããææžã«æžãããŠãã質åãã©ã®ææžã«ãçããç¡ã質åãçããäžéšã«ããæžãããŠããªã質åã®3çš®é¡ãæ··ããŸãããªããè©äŸ¡ã®ããã«å€éšã®ãµãŒãã¹ã§ããJevãžéãã®ã¯ããŠãŒã¶ãŒãå®éã«éã£ã質åã§ã¯ãªããè©äŸ¡çšã«äœã£ã質åã ãã§ãã ããŒã«ã«ã§è©Šããçµæ è©äŸ¡çšã«äœã£ã15åãJevå€å®ãªããšå€å®ããã®å·®ãæ¯ã¹ãŸãããJevã§å€å®ãããšãçããç¡ã質åã®å€ãã§ãæ£ãããçããç¡ãããšè¿ããããã«ãªããŸããããã®ä»£ãããçãããã質å12åã®ãã¡1ã2åã§ã¯ãææžãå
šéšèœãšããŠããŸããŸããã çããç¡ã質åã«ææžãè¿ããŠããŸã£ãïŒ5åäžïŒ çãããã質åã§ææžãå
šéšèœãšããïŒ12åäžïŒ å€å®ãªã 5 0 Jevã§å€å®ïŒANNã ãïŒ 1 1 Jevã§å€å®ïŒHYBRIDïŒANNïŒ 1 2 ã©ã¡ãã®åããæ°ãå°ãªãã»ã©è¯ãçµæã§ãã ä»åã¯ã©ã®çµã¿åããã§ãANNã®éŸå€ã0ã«ããŠããã®ã§ãéŸå€ã§ã¯äœãèœã¡ãŸããããã®ããå€å®ãªãã®å Žåã¯ãã©ããªè³ªåã«ãäžäœ3ææžããã®ãŸãŸè¿ããçãããã質åã§ã¯12åãã¹ãŠã§ææžãæ®ããŸãããäžæ¹ã§ããææ¥ã®æ±äº¬ã®å€©æ°ã¯ïŒããã¹ããã®é»æ± ãé·æã¡ãããæ¹æ³ã¯ïŒãã®ãããªãã€ã³ããã¯ã¹ã®ã©ã®ææžãšãé¢ä¿ã®ãªã質åã«ãææžãè¿ããŠããŸããŸããã Jevã§å€å®ãããšãçããç¡ã質å5åã®ãã¡4åã§ãæ£ãããçããç¡ãããšè¿ããŸãããäžæ¹ãçãããã質åã§ããææžã1ã€ãæ®ããªããã®ããANNã ãã§1åãHYBRIDïŒANNã§2åãããŸããããã®ãã¡ã®1ã€ã¯ããèåç²ãšåŒ·åç²ã®éãã¯ïŒãã®ãããªã2ã€ã®ãã®ã®éããèã質åã§ããã€ã³ããã¯ã¹ã«ã¯èåç²ã®ææžãšåŒ·åç²ã®ææžãå¥ã
ã«ãããã©ã¡ãã1ã€ã ãã§ã¯éãã«çããŠããªãã®ã§ãäž¡æ¹ãšãèœã¡ãŸãããææžã1ã€ãã€å€å®ããäœãã®åŒ±ã¿ã§ãè€æ°ã®ææžã«ãŸããã質åã«ã¯å¥ã®æ±ããèŠããŸãã ANNã ããšHYBRIDïŒANNã®å·®ã¯ãä»åã¯ã»ãšãã©åºãŸããã§ãããå€å®ã«ãããäžäœ10ææžã¯ãäžéšãå
¥ãæ¿ãã£ãŠããã ãã§ãããããã§ããæçµã®çµæãéã£ãã®ã¯1åã ãã§ããããå€å®ã«æž¡ãããã£ã³ã¯ã®éãã«ãããã®ã§ããã æšè«é床ã®äžå€®å€ã¯æ¬¡ã®ãšããã§ãã æ®µé æéïŒäžå€®å€ïŒ æ€çŽ¢èªã®åã蟌㿠145 ms æ€çŽ¢ïŒANNã ãïŒ 213 ms æ€çŽ¢ïŒHYBRIDïŒANNïŒ 242 ms HYBRIDïŒANNã¯2æ¬ã䞊è¡ã«åãåãããã®ã§ãANNã ããšã®å·®ã¯30 msã»ã©ã§ããå€å®ã®æ®µéã¯ãåã«æžãããšããæ°çŸmsã§ãã ãã®çµæã«ã¯ãæ¬¡ã®æ³šæç¹ããããŸãã 質åã¯è©äŸ¡çšã«äœã£ããã®ã§ãå®éã®ãŠãŒã¶ãŒã®è³ªåã§ã¯ãããŸãã éŸå€ã¯ä»®ã®å€ã§ãïŒå€å®ã¯0.5ãANNã¯0ïŒãANNã®éŸå€ã§é ãåè£ãèœãšã广ã¯ããŸã 枬ããŠããŸãã åŠãã ããš HYBRIDã®scoreã¯ãè¿ããã§ã¯ãªãã é äœããäœã£ãå€ã¯äžŠã¹æ¿ãã«ã¯äœ¿ããŠããçãã®æç¡ãéŸå€ã§èŠåããã®ã«ã¯äœ¿ããŸãããscoreãäœããèšç®ãããŠãããã確ãããŠãã䜿ãå¿
èŠãããã ãã¯ãã«ã®è¿ãã§åããã®ã¯ãæå³ãè¿ããããŸã§ã ãèãããããšã«çããŠããããã¯ãè¿ããšã¯å¥ã®åãã å€å®ã®çµæã¯ç¢ºçã§åãåãã ã¯ãïŒãããã§åãåããšãéŸå€ãåãããŸãããJevã® noul ã®ããã«ç¢ºçã§è¿ããã®ã䜿ãã°ãè©äŸ¡ãèŠãªãã調æŽã§ããŸã ææžããšã®å€å®ã¯ãè€æ°ã®ææžã«ãŸããã質åã«åŒ±ãã ãAãšBã®éããã®ãããªè³ªåã¯ã1ã€ã®ææžã ãã§ã¯çããããªãã®ã§ãææžãå
šéšèœã¡ãããšããããŸã ãããã« RAGã®ãæ ¹æ ãšãªãçããç¡ããããšãã©ãèŠåãããã¯ãäœãåã«æã£ãŠãããããã£ãšå¥¥ãæ·±ãåé¡ã§ããã 1ãæã®ã€ã³ã¿ãŒã³ã§ãæ€çŽ¢æ¹åŒã®éžã³æ¹ããå€å®ã®ä»çµã¿ãŸã§èªåã§æ¡ãèããŠææ¡ããããŒã ãšçžè«ããªãã圢ã«ã§ããŸãããè©äŸ¡ã§ã¯ãå€å®ãè¶³ããšãçããç¡ã質åã®å€ããæé€ã§ããåŸåãèŠããŸããã äžæ¹ã§ãçãããã質åã§ããææžãå
šéšèœãšãå Žåãããããšããè€æ°ã®ææžã«ãŸããã質åã«åŒ±ãããšãåãããŸãããããã«è³ªåãå¢ãããè©äŸ¡ã¯ãããããã®èª²é¡ã§ãã ãå¿ããäžãã¬ãã¥ãŒãããŠãã ãããçžè«ã«ãä¹ã£ãŠãã ãã£ã é
å±å
ã®ããŒã ã®çãããç¹ã«å²©åŽãããããããšãããããŸããã
æ¬èšäºã¯ 2026 幎 10 æ 27 æ¥ ã«å
¬éãããã Introducing time series collections for the next generation of Amazon OpenSearch Serverless ãã翻蚳ãããã®ã§ãã æ¬æ¥ãAmazon OpenSearch Serverless NextGen ãæç³»åã³ã¬ã¯ã·ã§ã³ã«å¯Ÿå¿ããããšãçºè¡šããŸããæç³»åã³ã¬ã¯ã·ã§ã³ã䜿ãã°ãã¯ã©ã¹ã¿ãŒã®ããããžã§ãã³ã°ã管çãããã«ããã°ãã¡ããªã¯ã¹ããã¬ãŒã¹ãã€ãã³ãããŒã¿ãåã蟌ã¿ãä¿åãåæã§ããŸããæç³»åã³ã¬ã¯ã·ã§ã³ã¯åã蟌ã¿ã®ã¹ãã€ã¯ãèªåã§åžåããçŽè¿ã®ããŒã¿ã¯é«éã«ã¯ãšãªã§ããæ°ãæããæ°å¹Žåã®å±¥æŽãäœã³ã¹ãã§æ€çŽ¢å¯èœã«ããŸããããããã¹ãŠãåãã³ã¬ã¯ã·ã§ã³å
ã§å®çŸããŸããæç³»åã³ã¬ã¯ã·ã§ã³ã¯ OpenSearch Serverless ã«ã¢ã©ãŒããšç°åžžæ€ç¥ã远å ãããããåé¡ãèµ·ããç¬éã«çºèŠããŠå¯ŸåŠã§ããŸããã³ã¬ã¯ã·ã§ã³ãããæå€§ 100 TB ã®ãããã¹ãã¬ãŒãžããµããŒãããã¢ããªã±ãŒã·ã§ã³ç£èŠãã»ãã¥ãªãã£åæãIoT ãã¬ã¡ããªãªã©å€§èŠæš¡ãªãªãã¶ãŒãããªãã£ã¯ãŒã¯ããŒãã«å¯Ÿå¿ããŸãã ãªãã¶ãŒãããªãã£ããŒã¿ã¯éãå€ããäžå
·åã®ãããããã€ãé害ãªã©ãããŒã ãæãæ©ãçããæ±ããç¬éã«æ¥å¢ããŸããã¯ã©ã¹ã¿ãŒã®ãµã€ãžã³ã°ãäžè¶³ãããšåŠçã远ãã€ããããšã³ãžãã¢ãåŸ
ã£ãŠãããã°ã®å°çãé
ãããããããŒã ã¯ããŒã¯è² è·ã«åãããŠãµã€ãžã³ã°ãããã以å€ã®æ¥ããã®å®¹éåãæ¯æãããšã«ãªããŸããå±¥æŽãå¢ãããšãããã¹ãã¬ãŒãžã®è²»çšãããããããä¿ææéãççž®ããããå€ãããŒã¿ãã¹ãããã·ã§ããã«ç§»ãããããããåŸãŸããããããã¹ãããã·ã§ããããã¯ãšãªããã«ã¯ããŸã誰ãã埩å
ããå¿
èŠããããŸããã¯ã©ã¹ã¿ãŒã«ã¯ç¶ç¶çãªãã¥ãŒãã³ã°ãšå®¹éèšç»ãå¿
èŠã§ãæ¬æ¥ããŒã¿ãæ¯æŽããã¯ãã®èª¿æ»ãããšã³ãžãã¢ãåŒãé¢ããŠããŸããŸãããããã倿ãã³ã¹ããä¿ææéãã·ã¹ãã ãžã®çåã«çãããŸã§ã®é床ã®ãã¬ãŒããªãã«ãªããŸãã OpenSearch Serverless ã®æç³»åã³ã¬ã¯ã·ã§ã³ã¯ãã¬ãŒããªããåãé€ããŸããã€ã³ã·ãã³ãã§ãã°éãæ¥å¢ããŠããã³ã³ãã¥ãŒããæ°ç§ã§ã¹ã±ãŒã«ããŠè¿œåŸããããããšã³ãžãã¢ãåŸ
ã£ãŠãããã°ã¯æééãã«å±ããŸãããã©ãã£ãã¯ãèœã¡çãã°ã³ã³ãã¥ãŒãã¯ãŒããŸã§ã¹ã±ãŒã«ããŠã³ãããããããŒã¯æã®å®¹éã«æ¯æãç¶ããå¿
èŠã¯ãããŸãããå€ãããŒã¿ã¯äœã³ã¹ãã®ãŠã©ãŒã å±€ã«ç§»åããŸããã¯ãšãªã¯å¯èœãªã®ã§ãä¿ææéãçž®ãããã¹ãããã·ã§ããã埩å
ãããããã«æ°å¹Žåã®å±¥æŽãä¿ãŠãŸãããµã€ãžã³ã°ããã¥ãŒãã³ã°ãå¿
èŠãªã¯ã©ã¹ã¿ãŒã¯ãããŸãããã³ã³ãã¥ãŒãã®äžéãšããã€ãã®ã€ã³ããã¯ã¹èšå®ãæå®ããã°ãããšã¯ãµãŒãã¹ãåŠçããŸãã ã¯ãšãªé »åºŠã®äœãããŒã¿ã¯äœã³ã¹ãã§ æç³»åããŒã¿ãžã®ã¯ãšãªã®å€§åã¯çŽè¿æ°æéããæ°æ¥ã察象ãšããŸãããå€ãããŒã¿ã¯ã¯ãšãªé »åºŠããäœããã®ã®ãåŒãç¶ãå©çšå¯èœã«ããŠããå¿
èŠããããŸããæ°ãã index.warm.after èšå®ã§ãããŒã¿ããããå±€ã«çãŸãæéãæå®ããäœã³ã¹ãã®ãŠã©ãŒã å±€ãžç§»åããã¿ã€ãã³ã°ã決ããããŸããæ¥åäœãŸãã¯æéåäœã§æå®ã§ããæå° 1 æ¥ ( 24h ãŸã㯠1d ) ããæå€§ 10 幎 ( 3650d ) ãŸã§ã®ç¯å²ã§ãã€ã³ããã¯ã¹ã®ä¿ææéãè¶
ããããšã¯ã§ããŸãããæªæå®ã®å ŽåãããŒã¿ã¯ 1 æ¥åŸã«ãŠã©ãŒã å±€ãžç§»åããŸãã PUT /app-logs { "settings": { "index.warm.after": "7d" } } åãèŸŒã¿æãåããã¥ã¡ã³ãã¯äœã¬ã€ãã³ã·ãŒã®ããã局㚠Amazon Simple Storage Service (Amazon S3) ã®äž¡æ¹ã«æžã蟌ãŸããŸããããŒã¿ãæå®ããçµéæéã«éãããšãå€ããã®ããé ã«ãããã³ããŒãè§£æŸãããããŒã¿ã¯ Amazon S3 äžã®ãŠã©ãŒã å±€ã«æ®ããŸããã¯ãšãªã§ãŠã©ãŒã å±€ã®ããŒã¿ãå¿
èŠã«ãªããšããµãŒãã¹ããã®ããŒã¿ããããå±€ã«èªã¿æ»ããŠåŠçããŸãã該åœããŒã¿ãžã®æåã®ã¯ãšãªã¯æéãããããŸãããåãããŒã¿ãžã®ä»¥éã®ã¯ãšãªã¯ãããå±€ã®ã¬ã€ãã³ã·ãŒã§å®è¡ãããŸããå€ãããŒã¿ã«å¯Ÿãã調æ»ãã¬ããŒãäœæã®ããã«ãåãæéç¯å²ãç¹°ãè¿ãã¯ãšãªããçšéã«é©ããŠããŸããã¯ãšãªãäž¡æ¹ã®å±€ã«ãŸãããå Žåããçµæã¯ 1 ã€ã®ã¬ã¹ãã³ã¹ã§è¿ããŸãããããã¹ãã¬ãŒãžã®æéã¯ããããå±€ã«æ®ã£ãŠããããŒã¿åã ãçºçããŸãã å³ 1: ããŒã¿ã¯ 7 æ¥åŸã«ãããå±€ãããŠã©ãŒã å±€ãžç§»åããå
šæéãéã㊠Amazon S3 ã«æ°žç¶åããã ã¯ãŒã¯ããŒããå¿
èŠãšããæéã ãããŒã¿ãä¿æ ä¿ææéã¯ã€ã³ããã¯ã¹èªäœã«èšå®ãããããå¥éã©ã€ããµã€ã¯ã«ããªã·ãŒãäœæã»ç¶æããå¿
èŠã¯ãããŸãããã€ã³ããã¯ã¹ãã³ãã¬ãŒãã§ index.data.retention ãèšå®ããã°ããã¿ãŒã³ã«äžèŽãããã¹ãŠã®ã€ã³ããã¯ã¹ããã®èšå®ãç¶æ¿ããŸãã1 æ¥ãã 3,650 æ¥ (10 幎) ãŸã§ã®ç¯å²ã§ãæ¥æ°ã®æŽæ°ã§æå®ããŸãã PUT /_index_template/app-logs { "index_patterns": ["app-logs*"], "template": { "settings": { "index.data.retention": "30" } } } é局管çãšä¿ææéã¯ç¬ç«ããŠããŸããé局管çã¯ã¯ãšãªé床ãšã³ã¹ããå¶åŸ¡ããä¿ææéã¯ããŒã¿ãåé€ãããã¿ã€ãã³ã°ãå¶åŸ¡ããŸããããšãã°ã¢ããªã±ãŒã·ã§ã³ãã°ã¯ 7 æ¥éãããå±€ã«çœ®ã㊠30 æ¥éä¿æããããããã¯ã³ã³ãã©ã€ã¢ã³ã¹èŠä»¶ã«åãããŠç£æ»ããŒã¿ãæ°å¹ŽéãŠã©ãŒã å±€ã«æ®ãããšãã£ãéçšãå¯èœã§ããç£æ»ãå¿
èŠã«ãªã£ãããåãã³ã¬ã¯ã·ã§ã³å
ã§å±¥æŽãã¯ãšãªããã ãã§ãæ€çŽ¢ã³ã³ãã¥ãŒãã远å è² è·ã«åãããŠã¹ã±ãŒã«ã¢ããããŸããã¹ãããã·ã§ããã®åŸ©å
ãã調æ»çšã¯ã©ã¹ã¿ãŒã®ç«ã¡äžããäžèŠã§ãã å³ 2: ããŒã¿ã®é局管çãšä¿ææé ã€ã³ããã¯ã¹ããšã«ã€ãã³ãã¿ã€ã ã¹ã¿ã³ããæå® æç³»åã³ã¬ã¯ã·ã§ã³å
ã®ãã¹ãŠã®ããã¥ã¡ã³ãã«ã¯ãã¿ã€ã ã¹ã¿ã³ããã£ãŒã«ããå¿
é ã«ãªããŸãããåã€ã³ããã¯ã¹ã«ã¯ããµãŒãã¹ãããŒã¿ã®æŽçãšãœãŒãã«äœ¿ãæå»ãã£ãŒã«ãã 1 ã€æå®ãããŠãããã¿ã€ã ã¹ã¿ã³ããæ¬ èœãnullããŸãã¯ç¡å¹ãªããã¥ã¡ã³ãã¯æåŠãããŸãã ããã©ã«ãã®æå»ãã£ãŒã«ã㯠@timestamp ã§ããã€ãã³ãã event_time ã®ãããªå¥ã®ãã£ãŒã«ãããã§ã«æã£ãŠããå Žåã¯ãã€ã³ããã¯ã¹äœææãŸãã¯ã€ã³ããã¯ã¹ãã³ãã¬ãŒãã§ index.timestamp_field ãèšå®ããã°ããããã¥ãŒãµãŒåŽã倿Žããã«æžã¿ãŸãããã£ãŒã«ãã¯ãããã¬ãã«ã® date ãã£ãŒã«ãã§ããå¿
èŠããããããã¥ã¡ã³ãã®ã¿ã€ã ã¹ã¿ã³ãã¯ã€ã³ããã¯ã¹ç»é²åŸã«å€æŽã§ããŸããã PUT /app-logs { "settings": { "index.timestamp_field": "event_time" } } æåŠã¯ããã¥ã¡ã³ãåäœã§ããªã¯ãšã¹ãå
šäœã«ã¯åã³ãŸããã _bulk ãªã¯ãšã¹ãã§ã¯æå¹ãªããã¥ã¡ã³ãã¯ã€ã³ããã¯ã¹ç»é²ãããæåŠãããããã¥ã¡ã³ãã¯ã¬ã¹ãã³ã¹ã® errors ãããã¯ã«åæãããããã1 ä»¶ã®äžæ£ã¬ã³ãŒãã§ãããå
šäœã倱æããããšã¯ãããŸããã å³ 3: æå»ãã£ãŒã«ããåããã¥ã¡ã³ãã®ã€ã³ããã¯ã¹ç»é²ãŸãã¯æåŠã決ããä»çµã¿ é害ã«çºå±ããåã«åé¡ãèŠã€ãã æç³»åã³ã¬ã¯ã·ã§ã³ã§ã¯ã¢ã©ãŒããšç°åžžæ€ç¥ã䜿ããããã«ãªããŸãããåŸæ¥ã® Classic ãµãŒããŒã¬ã¹ã³ã¬ã¯ã·ã§ã³ã§ã¯æäŸãããŠããªãã£ãæ©èœã§ããå¥ã®ã·ã¹ãã ã«é Œã£ãŠäžå
·åãç¥ãããŠããã代ããã«ãããŒã¿ãä¿åããŠããã³ã¬ã¯ã·ã§ã³èªäœã§ç£èŠãæ€ç¥ãéç¥ãã§ããŸããéçšããŒã ã¯ãšã©ãŒçãã¬ã€ãã³ã·ãŒã®æ¥å¢æã«éç¥ãåãåããã»ãã¥ãªãã£ããŒã ã¯ãã°ã€ã³å€±æã®æ¥å¢ãæ€ç¥ã§ããããžãã¹ããŒã ã¯æ³šææ°ã®æ¥èœãçºèŠã§ããŸãã ã¢ã©ãŒãã¢ãã¿ãŒã¯ã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠããŒã¿ãã¯ãšãªããæ¡ä»¶ãæºãããããšéžæãããã£ãã«ãéããŠéç¥ããŸããPer-query ã¢ãã¿ãŒã¯ãå¹³åã¬ã€ãã³ã·ãŒããããå€ãè¶
ãããªã©ãåäžã®å€ã«å¯ŸããŠã¢ã©ãŒããçºããŸããPer-bucket ã¢ãã¿ãŒã¯ããšã©ãŒçãäžããããããã¹ãããšãªã©ãã°ã«ãŒããåå¥ã«è©äŸ¡ããŸããPPL ã¢ãã¿ãŒã¯ Piped Processing Language (PPL) ã§ãããè€éãªããžãã¯ãæ±ããŸãã ç°åžžæ€ç¥ã¯ Random Cut Forest (RCF) æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã§ããŒã¿ã®éåžžãã¿ãŒã³ãåŠç¿ããåºå®ãããå€ãæšå®ããããšãªããã»ãŒãªã¢ã«ã¿ã€ã ã§éžè±ãæ€åºããŸããæ€åºåšã®çµæã«ã¢ãã¿ãŒãåããŠããã°ãç°åžžãçŸããç¬éã«éç¥ãåãåããŸãã ã¢ãã¿ãŒãšæ€åºåšã¯ OpenSearch UI ã¯ãŒã¯ã¹ããŒã¹ã§ç®¡çããã¢ã¯ã»ã¹æš©ã¯ã¯ãŒã¯ã¹ããŒã¹ã®ã³ã©ãã¬ãŒã¿ãŒæš©éã«åŸããŸããèªã¿åãå°çšã®ã³ã©ãã¬ãŒã¿ãŒã¯ã¢ãã¿ãŒãšã¢ã©ãŒããé²èЧã§ããèªã¿æžãããã³ç®¡çè
ã®ã³ã©ãã¬ãŒã¿ãŒã¯äœæãæŽæ°ã確èªå¿çãå¯èœã§ããObservability ã¯ãŒã¯ã¹ããŒã¹ã§ã¯ã¢ã©ãŒããããã·ã¥ããŒãã PPL ã¯ãšãªãšäžŠãã§é
眮ãããããããµãŒããŒã¬ã¹ã³ã¬ã¯ã·ã§ã³ãæ¢åã® Amazon OpenSearch Service ãã¡ã€ã³ã暪æããŠãã¢ã©ãŒãããèåŸã®ã€ãã³ããŸã§ãã©ããŸãã 䜿ã£ãŠã¿ã ã¯ã³ã¯ãªãã¯ã§å§ãããªããAmazon OpenSearch Service ã³ã³ãœãŒã«ã® Express Create ã䜿ããŸããã³ã¬ã¯ã·ã§ã³ã°ã«ãŒããæå·åããããã¯ãŒã¯ã¢ã¯ã»ã¹ãããŒã¿ã¢ã¯ã»ã¹ãèªåã§èšå®ããŠãããŸããåã¹ããããèªåã§å¶åŸ¡ãããå Žåã¯ã以äžã®ããã« AWS Command Line Interface (AWS CLI) ã䜿ããŸãã å³ 4: Express Create ãããã©ã«ãèšå®ã§ã³ã¬ã¯ã·ã§ã³ã°ã«ãŒããæå·åããããã¯ãŒã¯ã¢ã¯ã»ã¹ãèšå®ããæ§å ãŸããNextGen ã®ã³ã¬ã¯ã·ã§ã³ã°ã«ãŒããäœæããŸããã³ã¬ã¯ã·ã§ã³ã°ã«ãŒãã¯ãæå±ãããã¹ãŠã®ã³ã¬ã¯ã·ã§ã³ã§å
±æããã³ã³ãã¥ãŒãäžéãèšå®ããŸããOpenSearch Compute Unit (OCU) ã®æå°å€ã 0 ã«ããã°ãã¢ã€ãã«æã«ã°ã«ãŒãããŒããŸã§ã¹ã±ãŒã«ããŠã³ã§ããæå€§å€ã§æ¯åºã«äžéãèšããããŸãã aws opensearchserverless create-collection-group \ --name app-logs-group \ --generation NEXTGEN \ --standby-replicas ENABLED \ --capacity-limits '{ "minIndexingCapacityInOCU": 0, "minSearchCapacityInOCU": 0, "maxIndexingCapacityInOCU": 96, "maxSearchCapacityInOCU": 96 }' 次ã«ãã³ã¬ã¯ã·ã§ã³ãžã¢ã¯ã»ã¹ã§ããå Žæãå¶åŸ¡ãã ãããã¯ãŒã¯ããªã·ãŒ ãšãã©ã® AWS Identity and Access Management (IAM) ããªã³ã·ãã«ãããŒã¿ãèªã¿æžãã§ããããå¶åŸ¡ãã ããŒã¿ã¢ã¯ã»ã¹ããªã·ãŒ ãäœæããŸãã ç¶ããŠãã³ã¬ã¯ã·ã§ã³ã°ã«ãŒãå
ã«æç³»åã³ã¬ã¯ã·ã§ã³ãäœæããŸãã aws opensearchserverless create-collection \ --name app-logs \ --type TIMESERIES \ --collection-group-name app-logs-group \ --encryption-config aWSOwnedKey=true ã³ã¬ã¯ã·ã§ã³ãã¢ã¯ãã£ãã«ãªã£ãããæå»ãã£ãŒã«ããé局管çãä¿ææéã®èšå®ãå«ãã€ã³ããã¯ã¹ãã³ãã¬ãŒããã¯ãŒã¯ããŒãã«åãããŠäœæããŸããååããã¿ãŒã³ã«äžèŽãããã¹ãŠã®ã€ã³ããã¯ã¹ãã以äžã®èšå®ãèªåã§åŒãç¶ããŸãã PUT /_index_template/app-logs { "index_patterns": ["app-logs*"], "template": { "settings": { "index.timestamp_field": "event_time", "index.warm.after": "7d", "index.data.retention": "30" } } } æåŸã«ããŒã¿ãã³ã¬ã¯ã·ã§ã³ã«åã蟌ã¿ãOpenSearch UI ã® Observability ã¯ãŒã¯ã¹ããŒã¹ãéããŠãæåã®ããã·ã¥ããŒããã¢ãã¿ãŒãç°åžžæ€åºåšãäœæããŸãã æ¬æ¥æäŸéå§ æç³»åã³ã¬ã¯ã·ã§ã³ã¯ãNextGen ã® OpenSearch Serverless ãå©çšå¯èœãªãã¹ãŠã® AWS åçšãªãŒãžã§ã³ ã§æ¬æ¥ããæäŸãããŸããæé㯠OCU åäœã§äœ¿çšããã³ã³ãã¥ãŒããšãGB æåäœã®ãããããã³ãŠã©ãŒã ã¹ãã¬ãŒãžã«å¯ŸããŠçºçããŸãã詳现㯠Amazon OpenSearch Service æéããŒãž ãã芧ãã ããã 詳ããã¯ã Amazon OpenSearch Serverless 補åããŒãž ãš Amazon OpenSearch Serverless éçºè
ã¬ã€ã ãåç
§ããŠãã ããã Amazon OpenSearch Service ã³ã³ãœãŒã« ã§ãã²ã詊ãããã ãã AWS re:Post ãŸãã¯æ®æ®µãå©çšã® AWS ãµããŒãçªå£ãããã£ãŒãããã¯ããå¯ããã ããã èè
ã«ã€ã㊠Kevin Fallis Kevin ã¯ããã©ã³ã®ãªãŒããŒãã¢ãŒããã¯ããããããããŒã§ã蟲æ¥ãã¢ãããã¯ãéèãµãŒãã¹ããããã¯ãŒãã³ã°ãã»ãã¥ãªãã£ãéä¿¡ããããŠãã¡ããæ€çŽ¢æè¡ãªã©ãããŸããŸãªæ¥çãšå°éé åã§ã®çµéšãæã¡ãŸãã顧客ãããžãã¹ç®æšãéæã§ãããããAWS ãµãŒãã¹ãšãªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ã®é©åãªçµã¿åãããåŒãåºãããšã«æ
ç±ã泚ãã§ããŸããä»äºä»¥å€ã§ã¯ãå®¶æãšéããæéãDIY ãããžã§ã¯ãã倧工ä»äºãä¹éЬããã©ã æŒå¥ã鳿¥œå
šè¬ã楜ããã§ããŸãã ãã®èšäºã¯ Kiro ã翻蚳ãæ
åœããSolutions Architect ã® Sotaro Hikita ãã¬ãã¥ãŒããŸããã
ã¯ããã« ãçæAIãå°å
¥ããã°ãçµç¹ã®çç£æ§ã¯äžããã®ããââçŸå Žã§DXãæšé²ãããããŒãžã£ãŒããæ¥ã
ã®æ¥åã§AIã䜿ããªããã©ããéåæãæ±ããŠãããšã³ãžãã¢ã»ç¥èåŽåè
ã®æ¹ãå€ãã®ã§ã¯ãªãã§ããããã ç§ãæ
åœããŠãããããã¯ãã®éçºããŒã ã§ããAIã³ãŒãã£ã³ã°ããŒã«ãå°å
¥ããŠããŸãããããå°å
¥åŸãçæãããã³ãŒããååã«ç¢ºèªãããªããŸãŸãã«ãªã¯ãšã¹ããšããŠäžãããã¬ãã¥ãŒã§å·®ãæ»ããšããããåããäœåºŠãçºçããŸãããã³ãŒããæžãé床ã¯äžãã£ãã¯ããªã®ã«ãã¬ãã¥ãŒãšææ»ãã«è¿œãããå°ãªããšãç§ã«ã¯ãããŒã å
šäœã®çç£æ§ã¯AIå°å
¥åããäžãã£ãŠããããã«æããŸããã ããããçµéšã


















