ããã«ã¡ã¯ãAIããŒã ã®å¹²é£¯( @hosimesi11_ )ã§ãã ãã®èšäºã¯ AI Shift Advent Calendar 17æ¥ç®ã®èšäºã«ãªããŸããä»åã¯ããã¬ããžDBãšããŠäœ¿çšããŠ2çš®é¡ã®S3ãã±ããã䜿çšããé«ã³ã¹ããªãã£ããã·ã¹ãã ãäœæããŸãããæ¬èšäºã§æ±ã£ãã³ãŒã㯠ãã¡ã ã§å
¬éããŠããŸãã ã¯ããã« çæAIã®ãããã¯ããžã®çµã¿èŸŒã¿ãå¢ããã«ã€ããŠãæ€çŽ¢ã·ã¹ãã ã®éèŠæ§ãé«ãŸã£ãŠããŸããããŸããŸãªãããŒãžããªãã¬ããžDBãå¢ãããŠãŒã¶ãŒãã€ã³ãã©ãæèããã«éçšã§ããããã«ããªã£ãŠããŠããŸããããããäžè¬çã«æ¬çªéçšãå§ãããšãã¬ããžDBå
ã®ããŒã¿ã¯å¢ãç¶ãããããã³ã¹ãã倧ããªèª²é¡ã«ãªããŸããä»åã¯ãæè¿GAãããã°ããã®S3 VectorsãšS3 Tablesã䜿ã£ãŠãæ¯èŒçé«ã³ã¹ããªãã¬ããžæ€çŽ¢ã·ã¹ãã ãäœããããšæããŸãã æ¬æ¥äœãã·ã¹ãã ã®æ§æå³ã¯ä»¥äžã®éãã«ãªããŸããç°¡æçã«ãããããUIã¯äœããæšæºå
¥åã§ãŠãŒã¶ãŒããã®ã¯ãšãªãåãä»ããŸãã åæç¥è S3ã®ãã±ããã¿ã€ã çŸåšãS3ãã±ããã«ã¯ä»¥äžã®4çš®é¡ãååšããŠããŸãã æ±çšãã±ãã ãããããŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ããäžçªã¹ã¿ã³ããŒããªãã±ããã§ããããããããŒã¿åœ¢åŒã®ãã¡ã€ã«ãä¿åããããšãã§ãããã©ãããªã¹ãã¬ãŒãžæ§é ãæã£ãŠããŸãã ãã£ã¬ã¯ããªãã±ãã äœã¬ã€ãã³ã·ãŒãã€ãããŒã¿ã¬ãžãã³ã·ãŒãå¿
èŠãšãããŠãŒã¹ã±ãŒã¹åãã«æé©åãããŠããŸããæ±çšãã±ãããšã¯éãããªããžã§ã¯ããéå±€çã«æŽçããŸãã ããŒãã«ãã±ãã æ§é åããŒã¿çšã®ãã±ããã§ããã衚圢åŒããŒã¿ã®ä¿åã«é©ããŠããŸããåæãæ©æ¢°åŠç¿ã®ãŠãŒã¹ã±ãŒã¹ã«æé©åããã衚圢åŒããŒã¿ãApache Iceberg 圢åŒã§ä¿åããŸãã ãã¯ãã«ãã±ãã äžçªææ°ã®ãã±ããã¿ã€ãã§ããã¯ãã«æ€çŽ¢ã®ãŠãŒã¹ã±ãŒã¹ã«æé©åãããŠããŸããåã蟌ã¿ã¢ãã«ã«ãã£ãŠäœæããããã¯ãã«ããŒã¿ããã¯ãã«ã€ã³ããã¯ã¹ãå¹ççã«ä¿åããæ€çŽ¢ã§ããããã«ããŸãã ãã®äžã§ãä»åã¯ç¹ã« ããŒãã«ãã±ãã ãš ãã¯ãã«ãã±ãã ã䜿ããããšæããŸãã ããŒãã«ãã±ãã ããŒãã«ãã±ããã¯ãæ±äº¬ãªãŒãžã§ã³ã§ã¯2025幎1æã«GAãããŸãããæ§é åããŒã¿ã Apache Iceberg 圢åŒã§S3äžã«ä¿åãã Amazon Athena ã Amazon Redshift ã Apache Spark ãªã©ãšãã€ãã£ãçµ±åãããŠãããããäžè¬çãªã¯ãšãªãšã³ãžã³ã䜿çšããŠã¯ãšãªãå®è¡ã§ããŸããããŒã¿å¢å ã«å¯ŸããŠèªåã§ã®ããŒãã«æé©åãã¹ãããã·ã§ãããªã©ãåããŠãããIceberg圢åŒããŒã¿ã«å¯Ÿããåæã¯S3 Tablesã§å®çµãå¯èœã«ãªããŸãã 2025幎12æçŸåšã®æ±äº¬ãªãŒãžã§ã³ã®æéäœç³»ã¯ä»¥äžã®éãã§ãã ãã¯ãã«ãã±ãã S3 Vectorsã¯2025幎7æ15æ¥ã«ããŒã¿ãªãªãŒã¹ãããã€ãå
æ¥ã®2025幎12æ15æ¥ã«GAãããŸãããåã蟌ã¿ã¢ãã«ã«ããäœæããããã¯ãã«ããã¯ãã«ã€ã³ããã¯ã¹å
ã«æŽçããŠæ€çŽ¢ãã§ããããã«ãªããŸããçŸåšã¯è·é¢é¢æ°ãšããŠãã³ãµã€ã³é¡äŒŒåºŠãšãŠãŒã¯ãªããè·é¢ã䜿ãããšãã§ããŸããS3 Tablesãšåæ§ã«ããŒã¿å¢ã«å¯ŸããŠãèªåçã«æé©åãè¡ãããŸãããŸãã Amazon SageMaker Unified Studio ãã Amazon Bedrock Knowledge Bases ãšããã€ãã£ãã«çµ±åãããŠããããããããã®æ€çŽ¢ãå¯èœã«ãªããŸãããŸãã Amazon OpenSearch Service ãšããã€ãã£ãçµ±åãããŠãããããäœã¬ã€ãã³ã·ãæ±ããããæ€çŽ¢ã¯Amazon OpenSearch Serviceã«ãã³ãŒã«ãããŒã¿ã¯Amazon S3 Vectorsã«ä¿åãããšãã£ãçšéã«ã䜿ãããšãã§ããŸãã 2025幎12æçŸåšã®æ±äº¬ãªãŒãžã§ã³ã®æéäœç³»ã¯ä»¥äžã®éãã§ãã åæºå å®éã«2ã€ã®S3ãã±ããããã¬ããžDBãšããŠäœ¿çšããããã®åæºåãè¡ããŸãã ç°å¢æ§ç¯ uv ã䜿çšããŠç°å¢ãæ§ç¯ããŸããAWSã®ãªãœãŒã¹ãæäœãããããboto3ã远å ããŸãã uv init uv add boto3 ãŸããããŒã¿åŠçãªã©ã«å¿
èŠã«ãªãã©ã€ãã©ãªçŸ€ãã€ã³ã¹ããŒã«ããŠãããŸãã uv add pypdf pydantic ruff ty python-dotenv æ±ãããŒã¿ ä»åãéæ§é åããŒã¿ãšããŠããµã€ããŒãšãŒãžã§ã³ããå
¬éããŠãã AI/Data Technology Map ã®PDFã䜿çšããŸãããã¡ãã¯åãããã¯ãã®AI/Dataé åã®æè¡ã玹ä»ããè³æã§ãé¢çœãã®ã§ãã²ã芧ãã ãããæ§é åããŒã¿ãšããŠã¯ãçŽè¿ã®ãµã€ããŒãšãŒãžã§ã³ã㮠売ãäžãããŒã¿ ãCSVãã¡ã€ã«ã§çšæããŸãã ãã¯ãã«ããŒã¿ éæ§é åããŒã¿ã®å
ãšãªãPDFãã¡ã€ã«ãä¿åããããã«ããŸãS3ã®æ±çšãã±ãããçšæããŸãã aws s3 mb s3://ais-advent-calendar-2025-standard --region ap-northeast-1 次ã«ãããŠã³ããŒãããŠãããPDFãã¡ã€ã«ãã¢ããããŒãããŸãã aws s3 cp AIDataTechnologyMap.pdf s3://ais-advent-calendar-2025-standard/ ç¶ããŠããã¯ãã«ããŒã¿ãä¿åããããã®ãã¯ãã«ãã±ãããäœæããŸãã aws s3vectors create-vector-bucket --vector-bucket-name ais-advent-calendar-2025-vector ãã®åŸãã€ã³ããã¯ã¹ãäœæããŠãããŸããã€ã³ããã¯ã¹äœææã«ã¯ããã¯ãã«ã®æ¬¡å
æ°ãããŒã¿ã¿ã€ããè·é¢é¢æ°ãèšå®ããŸããããã§ã®èšå®å€ã¯ã䜿çšããåã蟌ã¿ã¢ãã«ã«ãã£ãŠç°ãªããããå©çšããã¢ãã«ã«åãããŠèšå®ããŠãã ãããä»åã¯Amazon Bedrockã® Titan Text Embeddings V2 ã䜿çšããããããã¯ãã«ã®æ¬¡å
æ°ã¯1024ã«èšå®ããŸãã aws s3vectors create-index --vector-bucket-name ais-advent-calendar-2025-vector --index-name ais-advent-calendar-2025-vector-index --data-type float32 --dimension 1024 --distance-metric cosine ä»åã¯ãBedrockã§ãã¯ãã«ãçæãããã®ãçŽæ¥S3 Vectorsã«å
¥ããŠãããŸããPDFãã¡ã€ã«ããã¯ãã«åããææ³ã¯æ§ã
ãããŸãããä»å㯠pypdf ã䜿ã£ãŠä»¥äžã®ã¹ãããã§ç°¡æçã«è¡ããŸãã詳现ã¯å®è£
ãåç
§ãã ããã PDFãã¡ã€ã«ããããã¹ãã®æœåº é©åœãªãµã€ãºãžã®ãã£ã³ãã³ã° Embeddingã¢ãã«ã§ã®ãã¯ãã«å ããã§äœæãããã¯ãã«ã€ã³ããã¯ã¹ãAmazon Bedrockã®Knowledge Basesãšçµ±åãããã¯ãã«ããŒã¿ããŒã¹ãšããŠæ±ãæ¹æ³ããããŸãã2025幎12æçŸåšãKnowledge Basesçµç±ã§æ±ãã«ã¯S3ã«ä¿æãããŠããããŒã¿ã«éãããWebã®ã¯ããŒãªã³ã°ããŒã¿ã¯é察å¿ã§ãã æ³šæç¹ãšããŠãS3 Vectorsã®ã¡ã¿ããŒã¿ã«å
ã®ããã¹ããå
¥ããªããšãæ€çŽ¢çµæãšããŠããã¹ããååŸã§ããªããããå¿
ãå«ããå¿
èŠããããŸãã ããŒãã«ããŒã¿ 次ã«ãS3 ããŒãã«ãã±ãããäœæããŸãã aws s3tables create-table-bucket --name ais-advent-calendar-2025-table ç¶ããŠãAmazon Athenaçµç±ã§ã¢ã¯ã»ã¹ããããã®ããŒã ã¹ããŒã¹ãäœããŸããããŒã ã¹ããŒã¹ã«ã¯ãã€ãã³ã䜿ããªãç¹ã«æ³šæãå¿
èŠã§ãã aws s3tables create-namespace --table-bucket-arn "your-arn-name" --namespace ais_advent_calendar_2025_table_namespace 次ã«ãäžèšã®CSVããŒã¿ã«å¯Ÿå¿ããããŒãã«ã¹ããŒããå®çŸ©ããŸãã aws s3tables create-table --table-bucket-arn "<your-arn-name>" --namespace ais_advent_calendar_2025_table_namespace --name ca_sales_table --format 'ICEBERG' --metadata '{"iceberg": {"schema": {"fields": [{"name": "period", "type": "string", "required": true},{"name": "net_sales", "type": "int", "required": false},{"name": "operating_income", "type": "int", "required": false},{"name": "non_operating_income", "type": "int", "required": false},{"name": "non_operating_expenses", "type": "int", "required": false},{"name": "ordinary_income", "type": "int", "required": false},{"name": "extraordinary_gains", "type": "int", "required": false},{"name": "extraordinary_losses", "type": "int", "required": false},{"name": "income_before_taxes", "type": "int", "required": false},{"name": "net_income", "type": "int", "required": false},{"name": "net_income_non_controlling_interests", "type": "int", "required": false},{"name": "net_income_attributable_to_owners", "type": "int", "required": false}]}}}' Amazon Athenaã«åããŠã¯ãšãªãæããéã¯ãã¯ãšãªçµæãåºåããS3ãã±ãããèšå®ããå¿
èŠããããããS3ãã±ãããäœæããèšå®ãè¡ããŸãã aws s3 mb s3://ais-advent-calendar-2025-athena-ouput --region ap-northeast-1 aws athena update-work-group --work-group primary --configuration-updates '{"ResultConfigurationUpdates": {"OutputLocation": "s3://<your-result-bucket-name>/athena-query-results/","RemoveAclConfiguration": false,"RemoveEncryptionConfiguration": false}}' ãããŸã§ã®æºåãå®äºããããAthenaçµç±ã§ããŒã¿ã远å ããŸãã INSERT INTO ca_sales_table VALUES -- FY2021 ('FY2021', 666149, 104070, 861, 548, 104382, 2201, 6173, 100410, 66359, 25117, 41242), -- FY2022 ('FY2022', 709923, 67552, 999, 648, 67902, 1633, 8299, 61236, 38096, 15194, 22901), -- FY2023 ('FY2023', 719451, 22351, 1263, 904, 22710, 1470, 3854, 20326, 9151, 5611, 3540), -- FY2024 ('FY2024', 801236, 40083, 1753, 2121, 39715, 313, 8815, 31213, 20376, 4398, 15977), -- FY2025 ('FY2025', 874030, 71702, 1622, 1581, 71743, 2319, 7835, 66227, 41964, 10296, 31667); ä»åã¯æåã§ããŒã¿ã远å ããŸããããæ¬çªéçšã«ãããŠã¯AWS Glue Jobãªã©ã䜿çšããŠèªåã§ããŒã¿è¿œå ãè¡ãã®ãäžè¬çã§ãã æ€çŽ¢ã·ã¹ãã å
ã»ã©äœæãã2ã€ã®S3ãã±ããã«æ ŒçŽããããã¬ããžã«å¯ŸããŠæ€çŽ¢ãã§ããã¢ããªã±ãŒã·ã§ã³ãå®è£
ããŠãããŸãã å®è£
å
šäœã®æµããšããŠã¯ä»¥äžã®ãããªåŠçãå®è£
ããŸããå®è£
ã¯å²ãšã·ã³ãã«ã«ãªã£ãŠããŸãã ãŠãŒã¶ãŒå
¥åãåãåã LLMã§ãSQLæ€çŽ¢(S3 Tables)ã / ãã¯ãã«æ€çŽ¢(S3 Vectors)ããããã©ã³ãã³ã°ãã ååŠçãè¡ã S3 Tablesã®å ŽåïŒAthenaã§SQLå®è¡Â â çµæãã³ã³ããã¹ãå â LLMã§åççæ S3 Vectorsã®å ŽåïŒåã蟌ã¿çæÂ â é¡äŒŒæ€çŽ¢Â â çµæãã³ã³ããã¹ãå â LLMã§åççæ åã¹ãããã®äžèº«ãèŠçŽããªããèŠãŠãããŸãã詳现ã¯GitHubã® ã³ãŒã ã確èªããŠãã ããã 1. ãŠãŒã¶ãŒå
¥åãåãåã æšæºå
¥åããã¯ãšãªãåãä»ãã plan_query_with_sql 颿°ã«æž¡ããŠæ€çŽ¢ãã©ã³ã決å®ãããŸãã def main() try: while True: try: # ãŠãŒã¶ãŒããã®å
¥åãåãåã query = input("\nquery> ").strip() except EOFError: # EOF (Ctrl+D / Ctrl+Z) ã§ã®çµäºåŠç logger.info("çµäº") return if not query: continue # ãŠãŒã¶ãŒããã®è³ªå(query)ããã©ã³ãã³ã°é¢æ°ã«æž¡ã plan = plan_query_with_sql( query=query, bedrock_runtime_client=bedrock_runtime_client, model_id=BEDROCK_CHAT_MODEL_ID, ) # ... (以éããã©ã³ã«åºã¥ããŠAthenaãŸãã¯Vectoræ€çŽ¢ãå®è¡) ... except KeyboardInterrupt: # Ctrl+C ã§ã®çµäºåŠç logger.info("çµäº") return 2. LLMã§ãSQLæ€çŽ¢(S3 Tables)ã / ãã¯ãã«æ€çŽ¢(S3 Vectors)ããããã©ã³ãã³ã°ãã ã¯ãšãªå
容ã«åºã¥ããŠãS3 TablesãS3 VectorsããéžæããS3 Tablesã®å Žåã¯å®è¡ããSQLãçæããŸãã def plan_query_with_sql( query: str, bedrock_runtime_client, model_id: str, ) -> QueryPlan: # 1. LLMã«æž¡ãã¹ããŒããšã«ãŒã«ã®èšå®ïŒsystem_textãæ§ç¯ïŒ # 2. Bedrock LLMã®åŒã³åºã resp = bedrock_runtime_client.converse( modelId=model_id, system=[{"text": system_text}], messages=[{"role": "user", "content": [{"text": f"ãŠãŒã¶ãŒã®è³ªå: {query}"}]}], ) # 3. LLMã®å¿çããJSONãæœåº raw = resp.get("output", {}).get("message", {}).get("content", [])[0]["text"] json_text = _extract_first_json_object(raw) data = json.loads(json_text) # 4. ããŒã¿ãœãŒã¹ãšSQLã®æœåº source = data.get("source", "s3vectors") sql = data.get("sql", "") reason = data.get("reason", "") # 5. ãã©ã³ã®ç¢ºå® if source == "s3table" and _is_safe_sql(sql): # ãŠãŒã¶ãŒãæå®ããæéãSQLã«è£æ£ã»åæ periods = _period_candidates(query) if periods: p = periods[0] # SQLã®åŸåŠç # sql = re.sub(...) return QueryPlan(source="s3table", sql=sql, reason=reason) # SQLãç¡å¹ or ãŸãã¯s3vectorsãæå®ãããå Žå return QueryPlan(source="s3vectors", sql="", reason=reason) 3-1. S3 Tablesã®å ŽåïŒAthenaã§SQLå®è¡Â â çµæãã³ã³ããã¹ãå â LLMã§åççæ LLMãS3 TablesãéžæããŠSQLãçæããå Žåã¯Athenaçµç±ã§SQLãå®è¡ããŸããååŸããçµæãã³ã³ããã¹ãã«ã€ããŠãLLMã«ãã£ãŠåçãçæããŸãã def main() ... if plan.source == "s3table" and plan.sql: ... try: rows = run_athena_query(sql=plan.sql, athena_client=athena_client) except Exception as e: use_table = False athena_error = str(e) logger.exception(f"athena query failed: {e}") logger.info("fallback to s3vectors (athena failed)") rows = [] if plan.source == "s3table": ... context = "\n".join(lines) ... answer = generate_answer_from_context( query=query, context=context, bedrock_runtime_client=bedrock_runtime_client, model_id=BEDROCK_CHAT_MODEL_ID, citation_hint="(table, period) ããã㯠(table, columns)", ) print("\nanswer>\n" + answer + "\n") continue 3-2. S3 Vectorsã®å ŽåïŒåã蟌ã¿çæÂ â é¡äŒŒæ€çŽ¢Â â çµæãã³ã³ããã¹ãå â LLMã§åççæ S3 Vectorsãéžæãããå Žåã¯ãåã蟌ã¿ã¢ãã«ã§ãã¯ãã«ããŒã¿ãçæããS3 Vectorsã«å¯ŸããŠæ€çŽ¢ãè¡ããŸããååŸããçµæãã³ã³ããã¹ãã«ã€ããŠãLLMã«ãã£ãŠåçãçæããŸãã def main() ... hits = search_vector_index( query=query, bedrock_runtime_client=bedrock_runtime_client, s3vectors_client=s3vectors_client, ) ... answer = generate_answer( query=query, hits=hits, bedrock_runtime_client=bedrock_runtime_client, model_id=BEDROCK_CHAT_MODEL_ID, ) print("\nanswer>\n" + answer + "\n") å®è¡çµæ äœã£ãæ€çŽ¢ã·ã¹ãã ã䜿çšããŠã¿ãŸããNL2SQLïŒèªç¶èšèªããSQLçæïŒã®éšåã¯ãç°¡æçãªå®è£
ã®ãããæ¬çªéçšæã«ã¯æ¹åã®äœå°ããããŸãããæå³ããéãã«æ€çŽ¢ã§ããŠãããã§ãã uv run src/main.py inference ãå®è¡äŸ 1ïŒãã¯ãã«æ€çŽ¢ïŒS3 VectorsïŒã query> voice botã®æè¡ã¿ã°ã¯ïŒ 2025-12-14 01:01:44,447 INFO __main__: route=s3vectors reason=voice botã®æè¡ã¿ã°ã«é¢ããäžè¬çãªãã¬ããžæ€çŽ¢ã§ãããS3ãã¯ã¿ãŒæ€çŽ¢ãé©åã§ããæ°å€éèšãæéã«ããçµã蟌ã¿ã¯äžèŠã§ãã 2025-12-14 01:01:45,101 INFO __main__: hits: distance=0.505279 AIDataTechnologyMap.pdf_50-51 source_file=AIDataTechnologyMap.pdf page=50 distance=0.658780 AIDataTechnologyMap.pdf_82-83 source_file=AIDataTechnologyMap.pdf page=82 distance=0.668686 AIDataTechnologyMap.pdf_126-127 source_file=AIDataTechnologyMap.pdf page=126 distance=0.677485 AIDataTechnologyMap.pdf_48-49 source_file=AIDataTechnologyMap.pdf page=48 distance=0.679986 AIDataTechnologyMap.pdf_78-79 source_file=AIDataTechnologyMap.pdf page=78 answer># Voice botã®æè¡ã¿ã° Voice botã®æè¡ã¿ã°ã¯ä»¥äžã®éãã§ãïŒ **èªç¶èšèªåŠçãé³å£°èªè** (source_file=AIDataTechnologyMap.pdf, page=50) ãå®è¡äŸ 2ïŒSQLæ€çŽ¢ïŒS3 TablesïŒã query> 2025ã®å£²ãäžãã¯ïŒ 2025-12-14 01:01:56,438 INFO __main__: route=s3table catalog=s3tablescatalog/ais-advent-calendar-2025-table db=ais_advent_calendar_2025_table_namespace table=ca_sales_table 2025-12-14 01:01:56,438 INFO __main__: sql: SELECT period, net_sales FROM ais_advent_calendar_2025_table_namespace.ca_sales_table WHERE period = 'FY2025' LIMIT 200 2025-12-14 01:01:58,508 INFO __main__: athena rows: 1 answer> 2025幎ã®å£²äžã¯ **874,030çŸäžå** ã§ãã ïŒåç
§: ca_sales_table, period=FY2025ã®net_salesïŒ ã³ã¹ã æåŸã«ããã®ã·ã¹ãã ã®ã¹ãã¬ãŒãžã³ã¹ãã詊ç®ããŸããEmbeddingãåççæã®éšåã¯ã©ã®å Žåã§ããããã®ã§ãã¹ãã¬ãŒãžã³ã¹ãã®ã¿ãèšç®ããŠã¿ãŸããäŸãšããŠãæ§é åããŒã¿100GBãšéæ§é åããŒã¿(ãã¯ãã«ããŒã¿åæžã¿)1TBããããæé10,000ãªã¯ãšã¹ãããããšä»®å®ããŸããâ» 1ãã«ã160åãšããŠèšç®ããŸãã 2çš®é¡ã®S3ãã±ããã䜿çšããå Žå ãµãŒãã¹ ããŒã¿é æéèšç®åŒïŒã¹ãã¬ãŒãž + ãªã¯ãšã¹ãïŒ è©Šç®çµæ S3 Tables 100GB 160å * (0.028$ * 100GB + 0.000378$ * 10 (åReq)) 448å + æé©åè²»çš (æŠç®) S3 Vectors 1TB (1024GB) 160å * (0.066$ * 1024GB + 0.0027$ * 10 (åReq)) 10,817å (æŠç®) äžè¬çãªããŒã«ã®å Žå(æå°æ§æ) ãµãŒãã¹ ããŒã¿é æéèšç®åŒïŒã¹ãã¬ãŒãž + ãªã¯ãšã¹ã or ã³ã³ãã¥ãŒãïŒ è©Šç®çµæ Cloud SQL 100GB 160 å * (0.442$ * 100GB) 7,072å (æŠç®) Open Search 1TB (1024GB) 160å * (0.026$ * 1024GB +0.334$ * 1 OCU * 730h) 38,991å(æŠç®) 2çš®é¡ã®S3ãã±ããã䜿çšããå Žåãã¹ãã¬ãŒãžæéãšã¯ãšãªæéã®ã¿ã§ããã諞ã
å
¥ããŠã1äžåååŸããã°éçšã§ãããã§ããäžè¬çãªããŒã«ã®æå°æ§æãšæ¯èŒããŠãå®ãã®ãåãããŸãããã¡ããAthenaãGlueãEmbeddingãåççæã«ãæéã¯ããããŸãããé©åãªããŒãã£ã·ã§ãã³ã°ãªã©ãããŠã¹ãã£ã³éãæžããããšãã§ããã°ã瀟å
å©çšãªã©ã®ã¬ã€ãã³ã·ã®èš±å®¹ã倧ããã¯ãŒã¯ããŒãã«ã¯æå¹ãªéžæè¢ã«ãªããšæããŸãã æåŸã« AI Shiftã§ã¯ãšã³ãžãã¢ã®æ¡çšã«åãå
¥ããŠããŸãïŒ å°ãã§ãèå³ãæã£ãŠããã ããŸããããã«ãžã¥ã¢ã«é¢è«ã§ã話ããŸãããïŒ ïŒãªã³ã©ã€ã³ã»19æä»¥éã®é¢è«ãå¯èœã§ãïŒïŒ ãé¢è«ãã©ãŒã ã¯ãã¡ãã https://hrmos.co/pages/cyberagent-group/jobs/1826557091831955459 åè https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Welcome.html#BasicsBucket https://dev.classmethod.jp/articles/schema-definition-s3tables-createtable-with-awscli/ æçš¿ 2çš®é¡ã®S3ãã±ããããã¬ããžDBãšããŠæŽ»çšãã ã¯ æ ªåŒäŒç€ŸAI Shift ã«æåã«è¡šç€ºãããŸããã