RAGïŒæ€çŽ¢æ¡åŒµçæïŒãšã¯ïŒä»çµã¿ãšãAPIã§æ§ç¯ããå®è£ ã®å šäœå

ãã®èšäºã®èŠç¹
- RAGïŒæ€çŽ¢æ¡åŒµçæïŒã¯ã質åã«é¢ä¿ããè³æããã®å Žã§æ€çŽ¢ããŠããã³ããã«å ¥ããLLMã«çããããä»çµã¿ã§ããã¢ãã«ã¯ãã®ãŸãŸã§ãç€Ÿå ææžãææ°ã®æ å ±ã«çããããŸãã
- éšåã¯ããã£ã³ã¯åå²ãåã蟌ã¿ããã¯ãã«æ€çŽ¢ãããã³ããã®çµã¿ç«ãŠãã¢ãã«ã®åŒã³åºãã®5ã€ã§ãã
- 粟床ãå·Šå³ããã®ã¯ããããŠããã£ã³ã¯ã®åãæ¹ãšæ€çŽ¢ã§ãã
- è²»çšã®äžå¿ã¯ãåãåºããè³æã®åã®å ¥åããŒã¯ã³ã§ãã
- FastMetalã§çµããªããåã蟌ã¿ã¯æå
ã®ãªãŒãã³ãœãŒã¹ã¢ãã«ãåã蟌ã¿ãµãŒãã¹ã§äœããåçã®çæãFastMetalã®
/chat/completionsã§åŒã³åºããŸãã
瀟å èŠçšã補åããã¥ã¡ã³ãã«ã€ããŠLLMã«çããããããšããæåã«ååãæããã®ãRAGã§ãããã®èšäºã§ã¯ãRAGã®ä»çµã¿ãéçºè ã®èŠç¹ã§éšåããšã«åããAPIã§æ§ç¯ããã³ãŒããè²»çšã®èŠç©ããæ¹ãè©äŸ¡ã®æ¹æ³ãŸã§ããŸãšããŸãã
RAGãšã¯ïŒçããçŽåã«è³æãæ¢ããŠæž¡ãä»çµã¿
RAGã¯Retrieval-Augmented Generationã®ç¥ã§ãæ¥æ¬èªã§ã¯æ€çŽ¢æ¡åŒµçæãšåŒã°ããŸãã質åãåãããããŸãæå ã®ææžããé¢ä¿ããéšåãæ€çŽ¢ãããã®æç²ã質åãšäžç·ã«ããã³ãããžå ¥ããŠãããã¢ãã«ã«åçãçæãããŸãã
LLMãç¥ã£ãŠããã®ã¯åŠç¿ããç¯å²ã®ããšã ãã§ãã瀟å ã®æ å ±ãåŠç¿åŸã®åºæ¥äºãå°ãããããšããã£ãšããããäœã話ã§çããããšããããŸããRAGãªããã¢ãã«ã¯ãã®éœåºŠæž¡ãããè³æãèªãã§çããŸããè³æãæŽæ°ããã°çããããã«å€ããã䜿ã£ãè³æã®çªå·ã瀺ãããã°ã人ãããšããæ ¹æ ã確ãããããŸãã
ãã¡ã€ã³ãã¥ãŒãã³ã°ãšã®éã
| RAG | ãã¡ã€ã³ãã¥ãŒãã³ã° | |
|---|---|---|
| å€ãããã® | ããã³ããã«æž¡ãè³æ | ã¢ãã«ã®éã¿ |
| åŸæãªããš | ç¥èãäºå®ãäžãã | å£èª¿ãåºå圢åŒã身ã«ã€ãããã |
| æ å ±ã®æŽæ° | è³æãå·®ãæ¿ããã ã | åŠç¿ãçŽã |
| æ ¹æ ã®æç€º | è³æã®çªå·ã§ç€ºãã | 瀺ãã«ãã |
RAGã䜿ãå Žé¢ãšãè³æãå šéšæž¡ãå Žé¢
è³æå šäœãã¢ãã«ã®ã³ã³ããã¹ããŠã£ã³ããŠã«äœè£ããã£ãŠåãŸããªãããŸãããšããã³ããã«å ¥ããã»ããæ©ã確å®ã§ããRAGãåãçºæ®ããã®ã¯ãè³æã倧ãããŠå ¥ããªããšããé »ç¹ã«æŽæ°ããããšããå©çšè ããšã«åç §ããè³æãéããšãã質åã®åæ°ãå€ãè²»çšãæããããšãã§ããäž¡è ã®è²»çšãšç²ŸåºŠã®æ¯èŒã¯RAG vs ãã³ã°ã³ã³ããã¹ãã«ãŸãšããŸããã
RAGã®ä»çµã¿ïŒæºåãšè³ªåæã®2段é
RAGã®åŠçã¯ãäºåã«äžåºŠã ãè¡ãæºåãšã質åã®ãã³ã«è¡ãåŠçã®2段éã«åãããŸãã
| 段é | å·¥çš | ããããš |
|---|---|---|
| æºå | 1. ãã£ã³ã¯åå² | ææžãæ€çŽ¢ãããã倧ããã«åã |
| æºå | 2. åã蟌㿠| åãã£ã³ã¯ããã¯ãã«ã«å€æããŠä¿åãã |
| è³ªåæ | 3. ãã¯ãã«æ€çŽ¢ | 質åããã¯ãã«ã«ããŠãè¿ããã£ã³ã¯ãåãåºã |
| è³ªåæ | 4. ããã³ããã®çµã¿ç«ãŠ | åãåºãããã£ã³ã¯ãšæç€ºã質åã«æ·»ãã |
| è³ªåæ | 5. ã¢ãã«ã®åŒã³åºã | LLMã«åçãçæããã |
以äžãå·¥çšããšã«åæãèŠãŠãããŸãã
1. ãã£ã³ã¯åå²ïŒæ€çŽ¢ã®åäœã決ãã
é·ãææžã¯ãæ°çŸåããåæ°çŸåã»ã©ã®å¡ïŒãã£ã³ã¯ïŒã«åãåããŠããæ€çŽ¢ã«ãããŸãããã®åãæ¹ããRAGå šäœã®ç²ŸåºŠããã¡ã°ã倧ããå·Šå³ããŸãã
现ããåãããããšããå瀟ã¯ãããã®æ©èœã¯ããäœãæãã®ãåãããªããã£ã³ã¯ãã§ããŸãã倧ããåãããããšãé¢ä¿ã®ãã1æãåšãã®æç« ã«åãããæ€çŽ¢ã§æŸãã«ãããªããŸããå®åã§ã¯æ¬¡ã®ããã«åãã®ãå®ç³ã§ãã
- èŠåºããæ®µèœã®åãç®ã§åããæã®éäžã§ã¯åããªã
- ååŸã®ãã£ã³ã¯ãå°ãéããŠãå¢çããŸããæ å ±ãèœãšããªã
- åãã£ã³ã¯ã®å é ã«ãææžåãšèŠåºããä»ããŠãã
æ¥æ¬èªã®ææžã¯åèªã®éã«ç©ºçœããªããããæåæ°ãšå¥ç¹ãåºæºã«åããšæ±ãããããªããŸãã
2. åã蟌ã¿ïŒæå³ããã¯ãã«ã«å€ãã
åã蟌ã¿ïŒEmbeddingïŒã¯ãæç« ãæ°çŸããæ°ååã®æ°å€ã®äžŠã³ïŒãã¯ãã«ïŒã«å€æããåŠçã§ããæå³ã®è¿ãæç« ã»ã©ãã¯ãã«å士ãè¿ããªãããããè§£çŽãããããšããµãŒãã¹ããããæ¹æ³ãã®ããã«èšèãéã£ãŠããåã話é¡ãšããŠèŠã€ããããŸãã
ææžãšè³ªåã¯ãå¿ ãåãåã蟌ã¿ã¢ãã«ã§å€æããŸããã¢ãã«ãéããšãã¯ãã«åå£«ãæ¯ã¹ããããéäžã§æ¿ããã°å šãã£ã³ã¯ã®èšç®ãçŽãã§ããå°éã®ææžã§æ¯ã¹ãŠããæ±ºããŸãããã詳ããã¯EmbeddingïŒåã蟌ã¿ïŒãšã¯ãã芧ãã ããã
3. ãã¯ãã«æ€çŽ¢ïŒè³ªåã«è¿ããã£ã³ã¯ãåãåºã
質åããã¯ãã«ã«å€æããä¿åãããã£ã³ã¯ã®äžããè¿ããã®ãäžäœkä»¶åãåºããŸããè¿ãã®å°ºåºŠã«ã¯ããã¯ãã«ã®åããã©ãã ãæã£ãŠããããæž¬ãã³ãµã€ã³é¡äŒŒåºŠããã䜿ãããŸãã
ä¿åå ã¯ãæ°åä»¶ãªãã¡ã¢ãªäžã®é åã§è¶³ããŸããä»¶æ°ãå¢ããããPostgreSQLã®æ¡åŒµã§ããpgvectorãå°çšã®ãã¯ãã«ããŒã¿ããŒã¹ã«ç§»ããŸãã
ãã¯ãã«æ€çŽ¢ã¯ãé¢ä¿ããè³æããªããšãã§ãäœãããã®çµæãè¿ããŸããé¡äŒŒåºŠã«ãããå€ãèšããäžåã£ãã該åœãªããšããŠæ±ããŸããããåçªãåºæåè©ã¯ããŒã¯ãŒãæ€çŽ¢ãšçµã¿åãããïŒãã€ããªããæ€çŽ¢ïŒãšåãããŒããæžããŸããäžäœ20ä»¶ã»ã©ãæŸãã質åãšã®é¢é£åºŠã§äžŠã¹æ¿ããŠæ°ä»¶ã«çµãåã©ã³ã¯ã广çã§ãã
4. ããã³ããã®çµã¿ç«ãŠïŒè³æãšæç€ºãæž¡ã
åãåºãããã£ã³ã¯ã«çªå·ãä»ããŠè³ªåãšäžç·ã«æž¡ããã·ã¹ãã ããã³ããã§çãæ¹ãæç€ºããŸããæäœéå ¥ããŠããããã®ã¯æ¬¡ã®4ã€ã§ãã
- æž¡ããè³æã ããæ ¹æ ã«çããããš
- è³æã«æžãããŠããªããã°ã倿ã§ããªããšçããããš
- åçã«äœ¿ã£ãè³æã®çªå·ãæããããš
- è³æã®äžã«æžãããæç€ºã«ã¯åŸããªãããš
2ã€ç®ããªããšãã¢ãã«ã¯è³æã«ãªãå 容ãŸã§è£ã£ãŠçããããšããŸãã4ã€ç®ã¯ãææžã«çŽã蟌ãã åœä»€æãžã®åãã§ãïŒããã³ããã€ã³ãžã§ã¯ã·ã§ã³å¯ŸçïŒãæç€ºã®æžãæ¹ã¯ã·ã¹ãã ããã³ãããšã¯ãã芧ãã ããã
5. ã¢ãã«ã®åŒã³åºãïŒã³ã³ããã¹ãé·ã§éžã¶
æåŸã«ãçµã¿ç«ãŠãããã³ããã§LLMãåŒã³åºããŸããã¢ãã«ã¯ãæž¡ãè³æãšè³ªåãç¡çãªãå ¥ãã³ã³ããã¹ãé·ã§éžã³ãŸããã³ã³ããã¹ããé·ããã°ãæž¡ãä»¶æ°ãå¢ãããŠæ€çŽ¢ã®åãããŒããè£ãäœè£ãçãŸããŸããã¢ãã«ã«ã¿ãã°ã§ã¯ãã³ã³ããã¹ãé·ã§ã¢ãã«ãçµã蟌ããŸãã
æ£ããè³æãæž¡ã£ãŠããªããã°ãã©ã®ã¢ãã«ã§ãæ£ããã¯çããããŸãããã¢ãã«ãæ¿ããã®ã¯ãæ€çŽ¢çµæã確ãããŠããã§ããæ€çŽ¢ãèŠããã©ããã質åããšã«ã¢ãã«ã«å€æããããå Žåã¯ãæ€çŽ¢ãããŒã«ãšããŠæž¡ããŸãïŒFunction callingãšã¯ïŒã
FastMetalã§RAGãæ§ç¯ããïŒåã蟌ã¿ãšåççæã®åæ
FastMetalã¯ã95以äžã®ã¢ãã«ã1ã€ã®APIããŒã§åŒã³åºããæ¥æ¬ã®AIã²ãŒããŠã§ã€ã§ãRAGã§ã¯æåŸã®åççæãåãæã¡ãŸããåã蟌ã¿ã¢ãã«ã¯æäŸããŠããªããããåã蟌ã¿ã¯æå ã§åãããªãŒãã³ãœãŒã¹ã®ã¢ãã«ããéžãã åã蟌ã¿ãµãŒãã¹ã§äœããŸããæå ã§åããã°ãææžã瀟å€ã«åºããã«ãã¯ãã«åã§ããŸãã
åçã®çæã¯ãOpenAIäºæAPIã® /chat/completions ã§åŒã³åºããŸããOpenAIã®å
¬åŒSDKã®ããŒã¹URLãšããŒãå·®ãæ¿ããã ãã§äœ¿ããŸããã¢ãã«ã¯æž¡ãè³æãåãŸãã³ã³ããã¹ãé·ã§éžã³ãID㯠/models ãšã³ããã€ã³ãã§äžèЧã§ããŸãã
curl https://api.fastmetal.ai/v1/models -H "Authorization: Bearer $FASTMETAL_API_KEY"
次ã®ã³ãŒãã¯ã5ã€ã®éšåãæå°éã®åœ¢ã§ã€ãªãã ãã®ã§ãïŒä¿åå
ã¯ã¡ã¢ãªäžã®ãªã¹ãïŒãåã蟌ã¿ã®æ¥ç¶å
ã¯ç°å¢å€æ°ã§æå®ããFastMetalã®ããŒã¹URLã¯åççæã®ã¯ã©ã€ã¢ã³ãã«ã ãèšå®ããŸããåã蟌ã¿å
ãOpenAIäºæã® /embeddings ã«å¯Ÿå¿ããŠããã°ãã®ãŸãŸåããå¥ã®åœ¢åŒãªã embed() ã®äžèº«ãå·®ãæ¿ããŸãã
import math
import os
from openai import OpenAI
# åã蟌ã¿ïŒæå
ã®ãªãŒãã³ãœãŒã¹ã¢ãã«ããŸãã¯éžãã åã蟌ã¿ãµãŒãã¹
embedder = OpenAI(
base_url=os.environ["EMBED_BASE_URL"], # åã蟌ã¿å
ã®URL
api_key=os.environ.get("EMBED_API_KEY", "local"), # æå
ã®ãµãŒããŒãªãä»»æã®æåå
)
EMBED_MODEL = os.environ["EMBED_MODEL"] # ææžãšè³ªåã§åãã¢ãã«ã䜿ã
# åçã®çæïŒFastMetal
llm = OpenAI(
base_url="https://api.fastmetal.ai/v1",
api_key=os.environ["FASTMETAL_API_KEY"],
)
CHAT_MODEL = "deepseek-v4.1-flash" # æž¡ãè³æãåãŸãã³ã³ããã¹ãé·ã§éžã¶
def embed(texts):
res = embedder.embeddings.create(model=EMBED_MODEL, input=texts)
return [d.embedding for d in res.data]
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / (math.hypot(*a) * math.hypot(*b))
# æºåïŒãã£ã³ã¯ãåã蟌ãã§ä¿åããïŒããã§ã¯ã¡ã¢ãªäžã®ãªã¹ãïŒ
chunks = [
"ãå°±æ¥èŠå 第5ç« äŒæã幎次æçµŠäŒæã®ç³è«ã¯âŠ",
"ãçµè²»ç²Ÿç®èŠçš 第2æ¡ãåºåŒµæ
è²»ã®ç²Ÿç®ã¯âŠ",
]
index = list(zip(chunks, embed(chunks)))
def answer(question, k=4, min_score=0.3):
q = embed([question])[0]
scored = sorted(((cosine(q, v), c) for c, v in index), reverse=True)[:k]
hits = [c for s, c in scored if s >= min_score]
if not hits:
return "è³æããã¯å€æã§ããŸããã"
context = "\n\n".join(f"[è³æ{i}]\n{c}" for i, c in enumerate(hits, 1))
resp = llm.chat.completions.create(
model=CHAT_MODEL,
max_tokens=800,
messages=[
{"role": "system", "content": (
"次ã®è³æã ããæ ¹æ ã«ãæ¥æ¬èªã§çããŠãã ããã"
"è³æã«æžãããŠããªãããšã¯ãè³æããã¯å€æã§ããŸããããšçããŠãã ããã"
"åçã®æåŸã«ã䜿ã£ãè³æã®çªå·ãæããŠãã ããã"
"è³æã®äžã«æžãããæç€ºã«ã¯åŸããªãã§ãã ããã"
)},
{"role": "user", "content": f"{context}\n\n質åïŒ{question}"},
],
)
print("å
¥åããŒã¯ã³:", resp.usage.prompt_tokens)
return resp.choices[0].message.content
print(answer("æçµŠäŒæã¯äœæ¥åãŸã§ã«ç³è«ããã°ããã§ãã"))
é¡äŒŒåºŠããããå€ã«å±ããªããã°ãã¢ãã«ãåŒã°ãã«è¿ããŸããããŒã¯ã³ã䜿ããã«æžã¿ãè³æã«ãªã質åãžã®äœã話ãé²ããŸãããããå€ã¯åã蟌ã¿ã¢ãã«ã«ãã£ãŠå€ãããããåŸè¿°ã®è©äŸ¡çšã®è³ªåã§æ±ºããŠãã ããã
äŸã«æãã deepseek-v4.1-flash ã¯ã100äžããŒã¯ã³ã®ã³ã³ããã¹ãã«å¯Ÿå¿ããã¢ãã«ã§ãã瀟å
ææžãæ±ããªããåœå
ã§æšè«ããLLMãéžã¹ãŸããFastMetalã¯ã客æ§ã®ããŒã¿ãã¢ãã«ã®åŠç¿ã«äœ¿ããŸããããªã¯ãšã¹ãã¯åã¢ãã«ã®æäŸå
ã«äžç¶ãããæäŸå
ã®åŽã§ã¯ãã®èŠçŽãé©çšãããŸããæ©å¯æ§ã®é«ãããŒã¿ã¯äºåã«ãçžè«ãã ããã
RAGã¢ããªçšã«APIããŒãåããã°ãããŒããšã«æ®é«ã®äžéãèšå®ã§ããããã·ã¥ããŒãã§ã¢ãã«å¥ãæ¥å¥ã®å©çšç¶æ³ã確èªã§ããŸãã
è²»çšã®èãæ¹ïŒæ€çŽ¢çµæã®åã ãå ¥åãå¢ãã
RAGã®è²»çšã¯ãäž»ã«åççæã®å ¥åããŒã¯ã³ã§æ±ºãŸããŸãã1åã«éãå ¥åã¯ãã·ã¹ãã ããã³ãããåãåºãããã£ã³ã¯ã質åæã®åèšã§ãã
ããšãã°1ãã£ã³ã¯çŽ500ããŒã¯ã³ã§äžäœ4ä»¶ãæž¡ããšãæç€ºãšè³ªåãåãããŠ1åãããçŽ2,500ããŒã¯ã³ã§ãã1æ¥1,000åãªã1ãæã§çŽ7,500äžããŒã¯ã³ã«ãªããå ¥åã®è²»çšã¯ãã®ã¢ãã«ã®å ¥åå䟡ïŒ100äžããŒã¯ã³ãããïŒã®çŽ75åã§ããããã«åºåããŒã¯ã³ãå ãããŸããæž¡ãä»¶æ°ã8ä»¶ã«ããã°ãè³æã®éšåã¯ãã®ãŸãŸ2åã§ããè²»çšãæããã«ã¯ãåã©ã³ã¯ã§ä»¶æ°ãçµãããã£ã³ã¯ãçãã«ãããåçã®é·ãã«äžéãèšãããã®3ã€ãå¹ããŸããæ¥æ¬èªãäœããŒã¯ã³ã«ãªããã¯æ¥æ¬èªã®ããŒã¯ã³ãšã³ã¹ãã§è§£èª¬ããŠããŸãã
åã蟌ã¿ã¯ãææžã®ç»é²æã«å šãã£ã³ã¯åãäžåºŠèšç®ããããšã¯è³ªåæã®åã ãã§ããæå ã®ã¢ãã«ãªãAPIã®å©çšæã¯ãããããåã蟌ã¿ãµãŒãã¹ãªããã®æäŸå ã®æéäœç³»ã«åŸããŸããFastMetalã«æ¯æãã®ã¯åççæã®åã§ãå建ãŠã®åäŸ¡ã¯æéããŒãžã§ãæé¡ã®èŠç©ããã¯AIã³ã¹ãèšç®ããŒã«ã§ç¢ºèªã§ããŸããããŒã¯ã³èª²éã®å šäœåã¯LLM APIãšã¯ãã芧ãã ããã
è©äŸ¡ïŒæ€çŽ¢ãšçæãåããŠæž¬ã
質åãæ£è§£ãæžãããè³æãæåŸ ããçãã®çµã30ãã50ä»¶ã»ã©çšæãã倿Žã®ãã³ã«åãã»ããã§æž¬ããŸããæž¬ããã«èª¿æŽãããšãæ¹åãæªåãã倿ã§ããŸããã
枬ã察象ã¯2ã€ã«åããŸãã1ã€ã¯æ€çŽ¢ã§ãæ£è§£ã®è³æãäžäœkä»¶ã«å ¥ã£ãå²åã§ãããã1ã€ã¯çæã§ãåçãè³æã®å å®¹ã«æ²¿ã£ãŠãããã質åã«æ£ããçããŠãããã確ãããŸããæ€çŽ¢ã®å²åãäœããªããã£ã³ã¯åå²ãæ€çŽ¢æ¹æ³ããæ€çŽ¢ã¯åããŠããã®ã«çããå€ãããªãããã³ãããã¢ãã«ãèŠçŽããŸããé²ãæ¹ã¯Evalså ¥éã«ãŸãšããŠããŸãã
ãããã倱æãšçŽãæ¹
é¢ä¿ã®ãªãè³æãäžäœã«æ¥ã
åå ã®å€ãã¯ããã£ã³ã¯ã倧ããããŠè©±é¡ããŒãããŠããããèŠåºãã®æ å ±ãæããŠããããšã§ããåãæ¹ãèŠçŽããææžåãšèŠåºããä»ããŠããåã蟌ã¿çŽããŸãã
æ£è§£ã®è³æãèŠã€ãããªã
åçªã補ååã瀟å çšèªã®ãããªåºæã®èšèã¯ããã¯ãã«æ€çŽ¢ã ãã§ã¯æŸãã«ãããã®ã§ããããŒã¯ãŒãæ€çŽ¢ã䜵çšããäž¡æ¹ã®çµæãåã©ã³ã¯ã«ãããŸãã
è³æã«ãªãããšãçãã
è³æã«ãªãããšã¯å€æã§ããªããšçããããæç€ºããé¡äŒŒåºŠããããå€ã«å±ããªããã°ã¢ãã«ãåŒã°ãã«è¿ããŸãã察çã®å šäœã¯ãã«ã·ããŒã·ã§ã³å¯Ÿçãã芧ãã ããã
æž¡ããããŠé ããé«ããªã
äžäœ20ä»¶ããã®ãŸãŸæž¡ããšãå ¥åããŒã¯ã³ãå¿çæéãå¢ããé¢ä¿ã®èãè³æã粟床ãäžããããšããããŸããåã©ã³ã¯ã§æ°ä»¶ã«çµã£ãŠããæž¡ããŸãããã
ãããã質å
RAGãšãã¡ã€ã³ãã¥ãŒãã³ã°ã¯ã©ã¡ãã䜿ãã¹ãã§ãã
ç¥èãäºå®ãçããããããªãRAGãå£èª¿ãåºå圢åŒã身ã«ã€ããããããªããã¡ã€ã³ãã¥ãŒãã³ã°ã§ããèªç€Ÿã®è³æã«çãããããªããè³æã®å·®ãæ¿ãã§æŽæ°ã§ããæ ¹æ ã瀺ããRAGãåããŠããŸãã
ãã¯ãã«ããŒã¿ããŒã¹ã¯å°çšã®ãã®ãå¿ èŠã§ãã
æåã¯å¿ èŠãããŸãããæ°åä»¶ãªãã¡ã¢ãªäžã§è¶³ããPostgreSQLã䜿ã£ãŠãããªãpgvectorããå§ããããŸããä»¶æ°ãé床ã課é¡ã«ãªã£ãŠãããå°çšã®ãã®ãæ€èšããŸãã
RAGã䜿ãã°ãã«ã·ããŒã·ã§ã³ã¯ãªããªããŸãã
æžãããŸããããŒãã«ã¯ãªããŸãããè³æã ããæ ¹æ ã«ãããåãããªããã°ããçããã䜿ã£ãè³æã®çªå·ãæãããã®3ã€ãæç€ºããé¡äŒŒåºŠããããå€ã«å±ããªããšãã¯åçãçæããªãäœãã«ããŸãã
ã³ã³ããã¹ããŠã£ã³ããŠã®é·ãã¢ãã«ãããã°ãRAGã¯äžèŠã§ãã
è³æãã³ã³ããã¹ãã«äœè£ããã£ãŠåãŸããªããå šéšæž¡ãã»ããç°¡åã§ããè³æã倧ããå Žåã質åã®åæ°ãå€ãå Žåã¯ãæ€çŽ¢ã§çµãã»ããè²»çšãšç²ŸåºŠã®äž¡é¢ã§æå©ã«ãªããŸãã
FastMetalã§RAGãäœãã«ã¯äœãå¿ èŠã§ãã
FastMetalã®APIããŒã®ã»ãã«ãåã蟌ã¿ãäœãææ®µãšããã£ã³ã¯ãšãã¯ãã«ã®ä¿åå ïŒã¡ã¢ãªãpgvectorãªã©ïŒãèŠããŸããFastMetalã¯åã蟌ã¿ã¢ãã«ãæäŸããŠããªããããåã蟌ã¿ã¯æå ã®ãªãŒãã³ãœãŒã¹ã¢ãã«ãåã蟌ã¿ãµãŒãã¹ã§äœããŸããåççæã®æéã¯100äžããŒã¯ã³ãããã®åŸé課éã§ãåæãã®ã¯ã¬ãžããããå·®ãåŒãããŸãã
FastMetalã§RAGã詊ã
ã¢ã«ãŠã³ãã®äœæã¯ç¡æã§ãã¯ã¬ãžããã¯Â¥500ããè³Œå ¥ã§ããŸããè³Œå ¥ã®ãã³ã«é©æ Œè«æ±æžãçºè¡ãããŸãã
ç¡æã§ã¢ã«ãŠã³ããäœæ ïœ æéãèŠã ïœ APIã®ã¯ãããã