AGI āđāļĨāļ° AI āđāļŦāđˆāļ‡āļ­āļ™āļēāļ„āļ•

āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļŠāļģāļŦāļĢāļąāļš RAG āļˆāļēāļāļĻāļđāļ™āļĒāđŒāđāļĨāļ°āļ­āļ·āđˆāļ™ āđ† : āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ

mm
āđ€āļžāļīāđˆāļĄ Unite.AI āļĨāļ‡āđƒāļ™āđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢāļšāļ™ Google

āđ‚āļĄāđ€āļ”āļĨ LLM āđ€āļŠāđˆāļ™ GPT-3, GPT-4 āđāļĨāļ°āļ„āļđāđˆāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠāļ‚āļ­āļ‡āļžāļ§āļāđ€āļ‚āļēāļĄāļąāļāļˆāļ°āļ”āļīāđ‰āļ™āļĢāļ™āđƒāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒāđāļĨāļ°āļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āļŦāļĢāļ·āļ­ â€œhallucinations”

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļšāļšāļˆāļģāļĨāļ­āļ‡āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨ (Retrieval-Augmented Generation, RAG) āđ€āļ›āđ‡āļ™āđ€āļ—āļ„āļ™āļīāļ„āļ—āļĩāđˆāļĢāļ§āļĄāļžāļĨāļąāļ‡āļ‚āļ­āļ‡ LLM āļ”āđ‰āļ§āļĒāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļ RAG āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰āđ‚āļ”āļĒāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāļ°āļ—āļąāļ™āļŠāļĄāļąāļĒ

āđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰ āđ€āļĢāļēāļˆāļ°āļŠāļģāļĢāļ§āļˆāļ§āļīāļ˜āļĩāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļŠāļģāļŦāļĢāļąāļš RAG āļˆāļēāļāļĻāļđāļ™āļĒāđŒ āđ‚āļ”āļĒāļāļēāļĢāļ”āļđāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ āđāļĨāļ°āđ€āļ—āļ„āļ™āļīāļ„āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ āđ€āļĢāļēāļˆāļ°āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ—āļļāļāļ­āļĒāđˆāļēāļ‡āļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ RAG āđ„āļ›āļˆāļ™āļ–āļķāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļāļēāļĢāđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨāđāļĨāļ°āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđ„āļ”āđ‰

āļāđˆāļ­āļ™āļ—āļĩāđˆāđ€āļĢāļēāļˆāļ°āđ€āļĢāļīāđˆāļĄāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļ‚āļ­āļ‡āđ€āļĢāļē āļĄāļēāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļāļąāļ™āļāđˆāļ­āļ™āļ§āđˆāļē RAG āļ„āļ·āļ­āļ­āļ°āđ„āļĢāđāļĨāļ°āļ—āļģāđ„āļĄāļĄāļąāļ™āļˆāļķāļ‡āļŠāļģāļ„āļąāļ

RAG āļŦāļĢāļ·āļ­ Retrieval-Augmented Generation āđ€āļ›āđ‡āļ™āđāļ™āļ§āļ—āļēāļ‡āđāļšāļšāļœāļŠāļĄāļ—āļĩāđˆāļĢāļ§āļĄāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‚āđ‰āļēāļāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ āđƒāļ™āļĢāļ°āļšāļš RAG:

  • āļ„āļģāļ–āļēāļĄāļˆāļ°āļ–āļđāļāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļˆāļēāļāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļ§āļēāļĄāļĢāļđāđ‰
  • āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™āļˆāļ°āļ–āļđāļāļŠāđˆāļ‡āđ€āļ‚āđ‰āļēāđ„āļ›āđƒāļ™āđ‚āļĄāđ€āļ”āļĨāļ āļēāļĐāļēāļžāļĢāđ‰āļ­āļĄāļāļąāļšāļ„āļģāļ–āļēāļĄāđ€āļ”āļīāļĄ
  • āđ‚āļĄāđ€āļ”āļĨāļˆāļ°āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ•āļ­āļšāļāļĨāļąāļšāđ‚āļ”āļĒāļ­āļēāļĻāļąāļĒāļ„āļģāļ–āļēāļĄāđāļĨāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āđ‰āļ™āļŦāļē
RAG

RAG

āđāļ™āļ§āļ—āļēāļ‡āļ™āļĩāđ‰āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļŦāļĨāļēāļĒāļ›āļĢāļ°āļāļēāļĢ:

  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļ—āļĩāđˆāļ”āļĩāļ‚āļķāđ‰āļ™: āđ‚āļ”āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļˆāļēāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āđ‰āļ™āļŦāļē RAG āļĨāļ”āļāļēāļĢ â€œhallucinations” āđāļĨāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āđ€āļ—āđ‡āļˆāļˆāļĢāļīāļ‡
  • āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ: āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļ§āļēāļĄāļĢāļđāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ­āļąāļ›āđ€āļ”āļ•āđ„āļ”āđ‰āļšāđˆāļ­āļĒāđ† āļ—āļģāđƒāļŦāđ‰āļĢāļ°āļšāļšāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ
  • āļ„āļ§āļēāļĄāđ‚āļ›āļĢāđˆāļ‡āđƒāļŠ: āļĢāļ°āļšāļšāļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāđ‰āđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļĄāļąāļ™ āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āđ€āļ—āđ‡āļˆāļˆāļĢāļīāļ‡āđ„āļ”āđ‰

āļāļēāļĢāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ•āļąāļ§āđāļ—āļ™ LLM

 

āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āđ€āļœāļŠāļīāļāļāļąāļšāļ›āļąāļāļŦāļēāļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩāļ„āļģāļ•āļ­āļšāļ‡āđˆāļēāļĒāđ† āļ„āļļāļ“āļĄāļąāļāļˆāļ°āļ•āđ‰āļ­āļ‡āļ—āļģāļ•āļēāļĄāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļŦāļĨāļēāļĒāļ‚āļąāđ‰āļ™āļ•āļ­āļ™ āļ„āļīāļ”āļ­āļĒāđˆāļēāļ‡āļĢāļ­āļšāļ„āļ­āļš āđāļĨāļ°āļˆāļ”āļˆāļģāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ„āļļāļ“āđ„āļ”āđ‰āļĨāļ­āļ‡āđāļĨāđ‰āļ§ āļ•āļąāļ§āđāļ—āļ™ LLM āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āđƒāļŠāđ‰āđƒāļ™āļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āđƒāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļĄāđ€āļ”āļĨāļ āļēāļĐāļē āļžāļ§āļāđ€āļ‚āļēāļĢāļ§āļĄāļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļĒāđˆāļēāļ‡āļĨāļ°āđ€āļ­āļĩāļĒāļ” āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™āđ€āļŠāļīāļ‡āļāļĨāļĒāļļāļ—āļ˜āđŒ āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļˆāļēāļāļāļēāļĢāļāļĢāļ°āļ—āļģāđƒāļ™āļ­āļ”āļĩāļ•āđ€āļžāļ·āđˆāļ­āđāļāđ‰āļ›āļąāļāļŦāļēāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™

āļ•āļąāļ§āđāļ—āļ™ LLM āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ•āļąāļ§āđāļ—āļ™ LLM āđ€āļ›āđ‡āļ™āļĢāļ°āļšāļš AI āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‹āļķāđˆāļ‡āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‹āļķāđˆāļ‡āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨāđāļšāļšāļĨāļģāļ”āļąāļš āļžāļ§āļāđ€āļ‚āļēāļŠāļēāļĄāļēāļĢāļ–āļ„āļīāļ”āļĨāđˆāļ§āļ‡āļŦāļ™āđ‰āļē āļˆāļ”āļˆāļģāļāļēāļĢāļŠāļ™āļ—āļ™āļēāļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē āđāļĨāļ°āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ•āđˆāļēāļ‡āđ† āđ€āļžāļ·āđˆāļ­āļ›āļĢāļąāļšāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ•āļēāļĄāļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāđāļĨāļ°āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ

āļžāļīāļˆāļēāļĢāļ“āļēāļ„āļģāļ–āļēāļĄāđƒāļ™āļ”āđ‰āļēāļ™āļāļŽāļŦāļĄāļēāļĒ āđ€āļŠāđˆāļ™ â€œāļœāļĨāļ—āļēāļ‡āļāļŽāļŦāļĄāļēāļĒāļ—āļĩāđˆāļ­āļēāļˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āļˆāļēāļāļāļēāļĢāļĨāļ°āđ€āļĄāļīāļ”āļŠāļąāļāļāļēāđāļšāļšāđƒāļ”āđāļšāļšāļŦāļ™āļķāđˆāļ‡āđƒāļ™āđāļ„āļĨāļīāļŸāļ­āļĢāđŒāđ€āļ™āļĩāļĒāļ„āļ·āļ­āļ­āļ°āđ„āļĢ?” āđ‚āļĄāđ€āļ”āļĨ LLM āļžāļ·āđ‰āļ™āļāļēāļ™āļžāļĢāđ‰āļ­āļĄāļĢāļ°āļšāļš RAG āļŠāļēāļĄāļēāļĢāļ–āļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļˆāļēāļāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļāļŽāļŦāļĄāļēāļĒ

āļŠāļģāļŦāļĢāļąāļšāļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļāļ§āđˆāļēāļ™āļĩāđ‰: “āđ€āļĄāļ·āđˆāļ­āļžāļīāļˆāļēāļĢāļ“āļēāļāļŽāļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āđƒāļŦāļĄāđˆ āļ­āļļāļ›āļŠāļĢāļĢāļ„āļ—āļēāļ‡āļāļŽāļŦāļĄāļēāļĒāļ—āļąāđˆāļ§āđ„āļ›āļ—āļĩāđˆāļšāļĢāļīāļĐāļąāļ—āļ•āđˆāļēāļ‡āđ† āđ€āļœāļŠāļīāļ āđāļĨāļ°āļĻāļēāļĨāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ•āđˆāļ­āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?” āļ„āļģāļ–āļēāļĄāļ™āļĩāđ‰āļĨāļķāļāļāļ§āđˆāļēāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āđ‰āļ­āđ€āļ—āđ‡āļˆāļˆāļĢāļīāļ‡āđ€āļžāļĩāļĒāļ‡āļ­āļĒāđˆāļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļĄāļąāļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļāļŽāđƒāļŦāļĄāđˆ āļœāļĨāļāļĢāļ°āļ—āļšāļ•āđˆāļ­āļšāļĢāļīāļĐāļąāļ—āļ•āđˆāļēāļ‡āđ† āđāļĨāļ°āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ‚āļ­āļ‡āļĻāļēāļĨ āļ•āļąāļ§āđāļ—āļ™ LLM āļˆāļ°āđāļšāđˆāļ‡āļ‡āļēāļ™āļ™āļĩāđ‰āļ­āļ­āļāđ€āļ›āđ‡āļ™āļ‡āļēāļ™āļĒāđˆāļ­āļĒ āđ€āļŠāđˆāļ™ āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļāļŽāļŦāļĄāļēāļĒāļĨāđˆāļēāļŠāļļāļ” āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļāļĢāļ“āļĩāļ—āļēāļ‡āļ›āļĢāļ°āļ§āļąāļ•āļīāļĻāļēāļŠāļ•āļĢāđŒ āļāļēāļĢāļŠāļĢāļļāļ›āđ€āļ­āļāļŠāļēāļĢāļ—āļēāļ‡āļāļŽāļŦāļĄāļēāļĒ āđāļĨāļ°āļāļēāļĢāļ„āļēāļ”āļāļēāļĢāļ“āđŒāđāļ™āļ§āđ‚āļ™āđ‰āļĄāļ•āļēāļĄāļĢāļđāļ›āđāļšāļš

āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™ LLM

āļ•āļąāļ§āđāļ—āļ™ LLM āđ‚āļ”āļĒāļ—āļąāđˆāļ§āđ„āļ›āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļš 4 āļŠāđˆāļ§āļ™:

  1. āļ•āļąāļ§āđāļ—āļ™/āļŠāļĄāļ­āļ‡: āđ‚āļĄāđ€āļ”āļĨāļ āļēāļĐāļēāļŦāļĨāļąāļāļ—āļĩāđˆāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļĨāļ°āđ€āļ‚āđ‰āļēāđƒāļˆāļ āļēāļĐāļē
  2. āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™: āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨ āļāļēāļĢāđāļšāđˆāļ‡āļ‡āļēāļ™āļ­āļ­āļāđ€āļ›āđ‡āļ™āļ‡āļēāļ™āļĒāđˆāļ­āļĒ āđāļĨāļ°āļžāļąāļ’āļ™āļēāļāļēāļĢāļ§āļēāļ‡āđāļœāļ™
  3. āļ„āļ§āļēāļĄāļˆāļģ: āļĢāļąāļāļĐāļēāļšāļąāļ™āļ—āļķāļāļ‚āļ­āļ‡āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļšāđƒāļ™āļ­āļ”āļĩāļ•āđāļĨāļ°āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļˆāļēāļāļžāļ§āļāļĄāļąāļ™
  4. āļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­: āļĢāļ§āļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ•āđˆāļēāļ‡āđ† āđ€āļžāļ·āđˆāļ­āļ—āļģāļ‡āļēāļ™

āļ•āļąāļ§āđāļ—āļ™/āļŠāļĄāļ­āļ‡

āļ—āļĩāđˆāđāļāđˆāļ™āļāļĨāļēāļ‡āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļ„āļ·āļ­āđ‚āļĄāđ€āļ”āļĨāļ āļēāļĐāļēāļ—āļĩāđˆāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļĨāļ°āđ€āļ‚āđ‰āļēāđƒāļˆāļ āļēāļĐāļēāđ‚āļ”āļĒāļ­āļēāļĻāļąāļĒāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļģāļ™āļ§āļ™āļĄāļēāļāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļāļķāļāļ­āļšāļĢāļĄ āļ„āļļāļ“āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ”āđ‰āļ§āļĒāļāļēāļĢāđƒāļŦāđ‰āļ„āļģāđāļ™āļ°āļ™āļģāđ€āļ‰āļžāļēāļ°āđ€āļžāļ·āđˆāļ­āļŠāļĩāđ‰āļ™āļģāļ•āļąāļ§āđāļ—āļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡ āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ—āļĩāđˆāļˆāļ°āđƒāļŠāđ‰ āđāļĨāļ°āđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļąāļšāđāļ•āđˆāļ‡āļ•āļąāļ§āđāļ—āļ™āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāļšāļļāļ„āļĨāļīāļāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļšāļ‡āļēāļ™āļŦāļĢāļ·āļ­āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļšāļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡ āļ‹āļķāđˆāļ‡āļˆāļ°āđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™

āļ„āļ§āļēāļĄāļˆāļģ

āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ„āļ§āļēāļĄāļˆāļģāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ•āļąāļ§āđāļ—āļ™ LLM āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ‡āļēāļ™āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđ‚āļ”āļĒāļāļēāļĢāļĢāļąāļāļĐāļēāļšāļąāļ™āļ—āļķāļāļ‚āļ­āļ‡āļāļēāļĢāļāļĢāļ°āļ—āļģāđƒāļ™āļ­āļ”āļĩāļ• āļĄāļĩāļŠāļ­āļ‡āļ›āļĢāļ°āđ€āļ āļ—āļŦāļĨāļąāļāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāļˆāļģ:

  • āļ„āļ§āļēāļĄāļˆāļģāļĢāļ°āļĒāļ°āļŠāļąāđ‰āļ™: āļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļāļĢāļ°āļ”āļēāļĐāļˆāļ”āļšāļąāļ™āļ—āļķāļ āđ‚āļ”āļĒāļ•āļīāļ”āļ•āļēāļĄāļāļēāļĢāļŠāļ™āļ—āļ™āļēāļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡
  • āļ„āļ§āļēāļĄāļˆāļģāļĢāļ°āļĒāļ°āļĒāļēāļ§: āļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļšāļąāļ™āļ—āļķāļ āđ‚āļ”āļĒāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļāļēāļĢāļŠāļ™āļ—āļ™āļēāđƒāļ™āļ­āļ”āļĩāļ•āđ€āļžāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļĢāļđāļ›āđāļšāļšāđāļĨāļ°āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ—āļĩāđˆāļ”āļĩāļ‚āļķāđ‰āļ™

āđ‚āļ”āļĒāļāļēāļĢāļœāļŠāļĄāļœāļŠāļēāļ™āļ„āļ§āļēāļĄāļˆāļģāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ›āļĢāļ°āđ€āļ āļ— āļ•āļąāļ§āđāļ—āļ™āļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāđ‰āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđāļĨāļ°āļˆāļ”āļˆāļģāļ„āļ§āļēāļĄāļŠāļ­āļšāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ•āļēāļĄāđ€āļ§āļĨāļē āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļšāļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āđāļĨāļ°āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļĄāļēāļāļ‚āļķāđ‰āļ™

āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™

āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ•āļąāļ§āđāļ—āļ™ LLM āļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨ āđāļšāđˆāļ‡āļ‡āļēāļ™āļ­āļ­āļāđ€āļ›āđ‡āļ™āļ‡āļēāļ™āļĒāđˆāļ­āļĒ āđāļĨāļ°āļ›āļĢāļąāļšāđāļœāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ•āļēāļĄāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™ āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāļŠāļ­āļ‡āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļŦāļĨāļąāļ:

  • āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™āļāļēāļĢ: āđāļšāđˆāļ‡āļ‡āļēāļ™āļ­āļ­āļāđ€āļ›āđ‡āļ™āļ‡āļēāļ™āļĒāđˆāļ­āļĒ
  • āļāļēāļĢāļŠāļ°āļ—āđ‰āļ­āļ™āđāļœāļ™: āļ—āļšāļ—āļ§āļ™āđāļĨāļ°āļ›āļĢāļ°āđ€āļĄāļīāļ™āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ‚āļ­āļ‡āđāļœāļ™ āđ‚āļ”āļĒāļĢāļ§āļĄāļ‚āđ‰āļ­āđ€āļŠāļ™āļ­āđāļ™āļ°āđ€āļžāļ·āđˆāļ­āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļāļĨāļĒāļļāļ—āļ˜āđŒ

āļ§āļīāļ˜āļĩāļāļēāļĢāđ€āļŠāđˆāļ™ Chain of Thought (CoT) āđāļĨāļ° Tree of Thought (ToT) āļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđāļšāđˆāļ‡āļ‡āļēāļ™āļ™āļĩāđ‰ āļ—āļģāđƒāļŦāđ‰āļ•āļąāļ§āđāļ—āļ™āļŠāļēāļĄāļēāļĢāļ–āļŠāļģāļĢāļ§āļˆāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ•āđˆāļēāļ‡āđ† āđ€āļžāļ·āđˆāļ­āđāļāđ‰āļ›āļąāļāļŦāļē

āđ€āļžāļ·āđˆāļ­āļĻāļķāļāļĐāļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āđāļ—āļ™ AI āļĢāļ§āļĄāļ–āļķāļ‡āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđāļĨāļ°āļĻāļąāļāļĒāļ āļēāļžāđƒāļ™āļ­āļ™āļēāļ„āļ• āđƒāļŦāđ‰āļžāļīāļˆāļēāļĢāļ“āļēāļ­āđˆāļēāļ™ â€œAuto-GPT & GPT-Engineer: āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āđāļ—āļ™ AI āļ—āļĩāđˆāļ™āļģāļŦāļ™āđ‰āļēāđƒāļ™āļ›āļąāļˆāļˆāļļāļšāļąāļ™â€

āļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ

āđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ RAG āļ‚āļ­āļ‡āđ€āļĢāļē āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āđ€āļ•āļĢāļĩāļĒāļĄāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļē āđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰ Python āđāļĨāļ°āđ„āļĨāļšāļĢāļēāļĢāļĩāđˆāļŦāļĨāļąāļāđ† āļ”āļąāļ‡āļ™āļĩāđ‰:

  • LangChain: āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ LLM āđāļĨāļ°āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ‚āļ­āļ‡āđ€āļĢāļē
  • Chroma: āđ€āļ›āđ‡āļ™āļĢāđ‰āļēāļ™āļ„āđ‰āļēāđ€āļ§āļāđ€āļ•āļ­āļĢāđŒāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļāļąāļ‡āļ•āļąāļ§āļ‚āļ­āļ‡āđ€āļ­āļāļŠāļēāļĢ
  • āđ‚āļĄāđ€āļ”āļĨ GPT āļ‚āļ­āļ‡ OpenAI: āđ€āļ›āđ‡āļ™ LLM āļžāļ·āđ‰āļ™āļāļēāļ™ (āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđāļ—āļ™āļ—āļĩāđˆāļ”āđ‰āļ§āļĒāđ‚āļĄāđ€āļ”āļĨāđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠāđ„āļ”āđ‰āļŦāļēāļāļ•āđ‰āļ­āļ‡āļāļēāļĢ)
  • FastAPI: āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ API āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒāđ€āļžāļ·āđˆāļ­āđ‚āļ•āđ‰āļ•āļ­āļšāļāļąāļšāļ•āļąāļ§āđāļ—āļ™āļ‚āļ­āļ‡āđ€āļĢāļē

āļĄāļēāļ—āļģāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāļāļąāļ™:


<p># āļŠāļĢāđ‰āļēāļ‡āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāđ€āļŠāļĄāļ·āļ­āļ™āđƒāļŦāļĄāđˆ
python -m venv rag_agent_env
source rag_agent_env/bin/activate # āļšāļ™ Windows āđƒāļŠāđ‰ `rag_agent_env\Scripts\activate`</p>

<p># āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđāļžāđ‡āļ„āđ€āļāļˆāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™
pip install langchain chromadb openai fastapi uvicorn

āļ•āļ­āļ™āļ™āļĩāđ‰ āļĄāļēāļ—āļģāđ„āļŸāļĨāđŒ Python āđƒāļŦāļĄāđˆāļŠāļ·āđˆāļ­ rag_agent.py āđāļĨāļ°āļ™āļģāđ€āļ‚āđ‰āļēāđ„āļĨāļšāļĢāļēāļĢāļĩāđˆāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™:


<p>from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
import os</p>

<p># āļ•āļąāđ‰āļ‡āļ„āđˆāļēキマ API āļ‚āļ­āļ‡ OpenAI
os.environ[&quot;OPENAI_API_KEY&quot;] = &quot;your-api-key-here&quot;</p>

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļš RAG āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒ

āļ•āļ­āļ™āļ™āļĩāđ‰āđ€āļĢāļēāļĄāļĩāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāļžāļĢāđ‰āļ­āļĄāđāļĨāđ‰āļ§ āļĄāļēāļ—āļģāļĢāļ°āļšāļš RAG āļžāļ·āđ‰āļ™āļāļēāļ™āļāļąāļ™ āđ€āļĢāļēāļˆāļ°āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ”āđ‰āļ§āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļāļēāļ™āļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļēāļāļŠāļļāļ”āđ€āļ­āļāļŠāļēāļĢ āļˆāļēāļāļ™āļąāđ‰āļ™āđƒāļŠāđ‰āļāļēāļ™āļ„āļ§āļēāļĄāļĢāļđāđ‰āļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āļ•āļ­āļšāļ„āļģāļ–āļēāļĄ

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 1: āđ€āļ•āļĢāļĩāļĒāļĄāđ€āļ­āļāļŠāļēāļĢ

āļāđˆāļ­āļ™āļ­āļ·āđˆāļ™āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āđ‚āļŦāļĨāļ”āđāļĨāļ°āđ€āļ•āļĢāļĩāļĒāļĄāđ€āļ­āļāļŠāļēāļĢāļ‚āļ­āļ‡āđ€āļĢāļē āđƒāļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ™āļĩāđ‰ āļŠāļĄāļĄāļ•āļīāļ§āđˆāļēāđ€āļĢāļēāļĄāļĩāđ„āļŸāļĨāđŒāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ·āđˆāļ­ knowledge_base.txt āļ—āļĩāđˆāļĄāļĩāļ‚āđ‰āļ­āļĄāļđāļĨāļšāļēāļ‡āļ­āļĒāđˆāļēāļ‡āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš AI āđāļĨāļ°āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡


<p># āđ‚āļŦāļĨāļ”āđ€āļ­āļāļŠāļēāļĢ
loader = TextLoader(&quot;knowledge_base.txt&quot;)
documents = loader.load()</p>

<p># āđāļšāđˆāļ‡āđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļāđ€āļ›āđ‡āļ™āļŠāļīāđ‰āļ™
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)</p>

<p># āļŠāļĢāđ‰āļēāļ‡āļāļēāļĢāļāļąāļ‡āļ•āļąāļ§
embeddings = OpenAIEmbeddings()</p>

<p># āļŠāļĢāđ‰āļēāļ‡āļĢāđ‰āļēāļ™āļ„āđ‰āļēāđ€āļ§āļāđ€āļ•āļ­āļĢāđŒ
vectorstore = Chroma.from_documents(texts, embeddings)</p>

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 2: āļŠāļĢāđ‰āļēāļ‡āđ‚āļ‹āđˆāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļŠāļ­āļšāļ–āļēāļĄ

āļ•āļ­āļ™āļ™āļĩāđ‰āđ€āļĢāļēāļĄāļĩāļĢāđ‰āļēāļ™āļ„āđ‰āļēāđ€āļ§āļāđ€āļ•āļ­āļĢāđŒāđāļĨāđ‰āļ§ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđ‚āļ‹āđˆāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļŠāļ­āļšāļ–āļēāļĄāđ„āļ”āđ‰:


<p># āļŠāļĢāđ‰āļēāļ‡āđ‚āļ‹āđˆāļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļŠāļ­āļšāļ–āļēāļĄ
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type=&quot;stuff&quot;, retriever=vectorstore.as_retriever())</p>

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 3: āļŠāļ­āļšāļ–āļēāļĄāļĢāļ°āļšāļš

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļ­āļšāļ–āļēāļĄāļĢāļ°āļšāļš RAG āļ‚āļ­āļ‡āđ€āļĢāļēāđ„āļ”āđ‰āđāļĨāđ‰āļ§:


<p>query = &quot;āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āļŦāļĨāļąāļāļāļēāļĢāļ‚āļ­āļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļĩāļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡?&quot;
result = qa.run(query)
print(result)

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ—āļĩāđˆ 4: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM

āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļĢāļ°āļšāļš RAG āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āđ€āļĢāļēāļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āđāļ•āđˆāļāđ‡āļĒāļąāļ‡āļˆāļģāļāļąāļ”āļ­āļĒāļđāđˆāļĄāļēāļ āļĄāļēāļ—āļģāđƒāļŦāđ‰āļĄāļąāļ™āļŠāļĄāļšāļđāļĢāļ“āđŒāđāļšāļšāđ‚āļ”āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđāļĨāļ°āđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āđ‰āļ™āļŦāļēāđ„āļ”āđ‰

āļ•āļąāļ§āđāļ—āļ™ LLM āđ€āļ›āđ‡āļ™āļĢāļ°āļšāļš AI āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđāļĨāļ°āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāļˆāļ°āļ—āļģāđ„āļ”āđ‰ āđ€āļĢāļēāļˆāļ°āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™āļ‹āļķāđˆāļ‡āđ„āļĄāđˆāđ€āļžāļĩāļĒāļ‡āđāļ•āđˆāļ•āļ­āļšāļ„āļģāļ–āļēāļĄāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ āđāļ•āđˆāļĒāļąāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ„āđ‰āļ™āļŦāļēāļ—āļēāļ‡āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļ™āđ‡āļ•āđāļĨāļ°āļ„āļģāļ™āļ§āļ“āļžāļ·āđ‰āļ™āļāļēāļ™āđ„āļ”āđ‰

āļāđˆāļ­āļ™āļ­āļ·āđˆāļ™ āļĄāļēāļ—āļģāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļģāļŦāļĢāļąāļšāļ•āļąāļ§āđāļ—āļ™āļ‚āļ­āļ‡āđ€āļĢāļē:


<p>from langchain.agents import Tool
from langchain.tools import DuckDuckGoSearchRun
from langchain.tools import BaseTool
from langchain.agents import initialize_agent
from langchain.agents import AgentType</p>

<p># āļ™āļīāļĒāļēāļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ•āļąāļ§āđ€āļĨāļ‚
class CalculatorTool(BaseTool):
name = &quot;Calculator&quot;
description = &quot;āļŠāļģāļŦāļĢāļąāļšāļ„āļģāļ–āļēāļĄāļ—āļēāļ‡āļ„āļ“āļīāļ•āļĻāļēāļŠāļ•āļĢāđŒ&quot;</p>

<p>def _run(self, query: str)
try:
return str(eval(query))
except:
return &quot;āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ„āļģāļ™āļ§āļ“āđ„āļ”āđ‰ āđ‚āļ›āļĢāļ”āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļ„āļļāļ“āļ–āļđāļāļ•āđ‰āļ­āļ‡&quot;</p>

<p># āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­
search = DuckDuckGoSearchRun()
calculator = CalculatorTool()</p>

<p># āļ™āļīāļĒāļēāļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­
tools = [Tool(name=&quot;āļ„āđ‰āļ™āļŦāļē&quot;,func=search.run,description=&quot;āļŠāļģāļŦāļĢāļąāļšāļ„āļģāļ–āļēāļĄāļ—āļąāđˆāļ§āđ„āļ›&quot;),
Tool(name=&quot;RAG-QA&quot;,func=qa.run,description=&quot;āļŠāļģāļŦāļĢāļąāļšāļ„āļģāļ–āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš AI āđāļĨāļ°āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡&quot;),
Tool(name=&quot;Calculator&quot;,func=calculator._run,description=&quot;āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļžāļ·āđ‰āļ™āļāļēāļ™&quot;)
]</p>

<p># āļ™āļīāļĒāļēāļĄāļ•āļąāļ§āđāļ—āļ™
agent = initialize_agent(tools, OpenAI(temperature=0), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)</p>

āļ•āļ­āļ™āļ™āļĩāđ‰āđ€āļĢāļēāļĄāļĩāļ•āļąāļ§āđāļ—āļ™āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļĢāļ°āļšāļš RAG āļ‚āļ­āļ‡āđ€āļĢāļē āļ„āđ‰āļ™āļŦāļēāļ—āļēāļ‡āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļ™āđ‡āļ• āđāļĨāļ°āļ„āļģāļ™āļ§āļ“āļžāļ·āđ‰āļ™āļāļēāļ™āđ„āļ”āđ‰ āļĄāļēāļ—āļ”āļŠāļ­āļšāļĄāļąāļ™:


<p>result = agent.run(&quot;āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđāļšāļšāļĄāļĩāļœāļđāđ‰āļŠāļ­āļ™āđāļĨāļ°āđ„āļĄāđˆāļĄāļĩāļœāļđāđ‰āļŠāļ­āļ™āļ„āļ·āļ­āļ­āļ°āđ„āļĢ? āđāļĨāļ° 15% āļ‚āļ­āļ‡ 80 āļ„āļ·āļ­āđ€āļ—āđˆāļēāđ„āļĢ?&quot;)
print(result)</p>

āļ•āļąāļ§āđāļ—āļ™āđāļŠāļ”āļ‡āđƒāļŦāđ‰āđ€āļŦāđ‡āļ™āļ–āļķāļ‡āļ‚āđ‰āļ­āđ„āļ”āđ‰āđ€āļ›āļĢāļĩāļĒāļšāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™ LLM: āļŠāļēāļĄāļēāļĢāļ–āļĢāļ§āļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāđƒāļŦāđ‰āđ€āļŦāļ•āļļāļœāļĨāđ€āļžāļ·āđˆāļ­āļ•āļ­āļšāļ„āļģāļ–āļēāļĄāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™

āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ•āļąāļ§āđāļ—āļ™āđ‚āļ”āļĒāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„ RAG āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ

āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļĢāļ°āļšāļš RAG āļ‚āļ­āļ‡āđ€āļĢāļēāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļ•āđˆāļāđ‡āļĄāļĩāđ€āļ—āļ„āļ™āļīāļ„āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒāļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļĄāļąāļ™:

a) āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāđ‚āļ”āļĒāđƒāļŠāđ‰ Dense Passage Retrieval (DPR)

āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđƒāļŠāđ‰āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāļ—āļĩāđˆāļ­āļēāļĻāļąāļĒāļāļēāļĢāļāļąāļ‡āļ•āļąāļ§āđāļšāļšāļ‡āđˆāļēāļĒāđ† āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰ DPR āđ€āļžāļ·āđˆāļ­āļ„āđ‰āļ™āļŦāļēāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļĄāļēāļāļ‚āļķāđ‰āļ™:


<p>from transformers import DPRQuestionEncoder, DPRContextEncoder</p>

<p>question_encoder = DPRQuestionEncoder.from_pretrained(&quot;facebook/dpr-question_encoder-single-nq-base&quot;)
context_encoder = DPRContextEncoder.from_pretrained(&quot;facebook/dpr-ctx_encoder-single-nq-base&quot;)</p>

<p># āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļ™āļāļēāļĢāļāļąāļ‡āļ•āļąāļ§āļœāđˆāļēāļ™
def encode_passages(passages):
return context_encoder(passages, max_length=512, return_tensors=&quot;pt&quot;).pooler_output</p>

<p># āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļ™āļāļēāļĢāļāļąāļ‡āļ•āļąāļ§āļ„āļģāļ–āļēāļĄ
def encode_query(query):
return question_encoder(query, max_length=512, return_tensors=&quot;pt&quot;).pooler_output</p>

b) āļāļēāļĢāļ‚āļĒāļēāļĒāļ„āļģāļ–āļēāļĄ

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļāļēāļĢāļ‚āļĒāļēāļĒāļ„āļģāļ–āļēāļĄāđ€āļžāļ·āđˆāļ­āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļāļēāļĢāļ„āđ‰āļ™āļŦāļē:


<p>from transformers import T5ForConditionalGeneration, T5Tokenizer</p>

<p>model = T5ForConditionalGeneration.from_pretrained(&quot;t5-small&quot;)
tokenizer = T5Tokenizer.from_pretrained(&quot;t5-small&quot;)</p>

<p>def expand_query(query):
input_text = f&quot;āļ‚āļĒāļēāļĒāļ„āļģāļ–āļēāļĄ: {query}&quot;
input_ids = tokenizer.encode(input_text, return_tensors=&quot;pt&quot;)
outputs = model.generate(input_ids, max_length=50, num_return_sequences=3)
expanded_queries = [tokenizer.decode(output, skip_special_tokens=True) for output in outputs]
return expanded_queries</p>

c) āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđāļšāļšāļāđ‰āļēāļ§āļŦāļ™āđ‰āļē

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđāļšāļšāļāđ‰āļēāļ§āļŦāļ™āđ‰āļēāđ‚āļ”āļĒāļ—āļĩāđˆāļ•āļąāļ§āđāļ—āļ™āļŠāļēāļĄāļēāļĢāļ–āļ–āļēāļĄāļ„āļģāļ–āļēāļĄāđ€āļžāļ·āđˆāļ­āļŠāļĩāđ‰āđāļˆāļ‡āļŦāļĢāļ·āļ­āļ‚āļĒāļēāļĒāļ„āļģāļ•āļ­āļšāđāļĢāļāļ‚āļ­āļ‡āļĄāļąāļ™:


<p>def iterative_retrieval(initial_query, max_iterations=3):
query = initial_query
for _ in range(max_iterations):
result = qa.run(query)
clarification = agent.run(f&quot;āļ•āļēāļĄāļœāļĨāļĨāļąāļžāļ˜āđŒāļ™āļĩāđ‰: &#039;{result}&#039; āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆāļ„āļ§āļĢāļ–āļēāļĄāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ„āļ”āđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡āļāļ§āđˆāļēāļ™āļĩāđ‰āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?&quot;)
if clarification.lower().strip() == &quot;āđ„āļĄāđˆāļĄāļĩ&quot;:
break
query = clarification
return result</p>

# āđƒāļŠāđ‰āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āđƒāļ™āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™

āļāļēāļĢāļ™āļģāļĢāļ°āļšāļšāļŦāļĨāļēāļĒāļ•āļąāļ§āđāļ—āļ™āļĄāļēāđƒāļŠāđ‰

āđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ‡āļēāļ™āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļĄāļēāļāļ‚āļķāđ‰āļ™ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ™āļģāļĢāļ°āļšāļšāļŦāļĨāļēāļĒāļ•āļąāļ§āđāļ—āļ™āļĄāļēāđƒāļŠāđ‰ āđ‚āļ”āļĒāļ—āļĩāđˆāļ•āļąāļ§āđāļ—āļ™āđāļ•āđˆāļĨāļ°āļ•āļąāļ§āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāđƒāļ™āļ”āđ‰āļēāļ™āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™ āļĄāļēāļ—āļģāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‡āđˆāļēāļĒāđ† āļāļąāļ™:


<p>class SpecialistAgent:
def __init__(self, name, tools):
self.name = name
self.agent = initialize_agent(tools, OpenAI(temperature=0), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)</p>

<p>def run(self, query):
return self.agent.run(query)</p>

<p># āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™āļœāļđāđ‰āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ
research_agent = SpecialistAgent(&quot;āļāļēāļĢāļ§āļīāļˆāļąāļĒ&quot;, [Tool(name=&quot;RAG-QA&quot;, func=qa.run, description=&quot;āļŠāļģāļŦāļĢāļąāļšāļ„āļģāļ–āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš AI āđāļĨāļ°āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡&quot;)])
math_agent = SpecialistAgent(&quot;āļ„āļ“āļīāļ•āļĻāļēāļŠāļ•āļĢāđŒ&quot;, [Tool(name=&quot;Calculator&quot;, func=calculator._run, description=&quot;āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļžāļ·āđ‰āļ™āļāļēāļ™&quot;)])
general_agent = SpecialistAgent(&quot;āļ—āļąāđˆāļ§āđ„āļ›&quot;, [Tool(name=&quot;āļ„āđ‰āļ™āļŦāļē&quot;, func=search.run, description=&quot;āļŠāļģāļŦāļĢāļąāļšāļ„āļģāļ–āļēāļĄāļ—āļąāđˆāļ§āđ„āļ›&quot;)])</p>

<p>class Coordinator:
def __init__(self, agents):
self.agents = agents</p>

<p>def run(self, query):
# āļĢāļ°āļšāļļāļ•āļąāļ§āđāļ—āļ™āđƒāļŦāđ‰āđƒāļŠāđ‰
if &quot;āļ„āļģāļ™āļ§āļ“&quot; in query.lower() or any(op in query for op in [&#039;+&#039;, &#039;-&#039;, &#039;*&#039;, &#039;/&#039;]):
return self.agents[&#039;āļ„āļ“āļīāļ•āļĻāļēāļŠāļ•āļĢāđŒ&#039;].run(query)
elif any(term in query.lower() for term in [&#039;ai&#039;, &#039;āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡&#039;, &#039;āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļĨāļķāļ&#039;]):
return self.agents[&#039;āļāļēāļĢāļ§āļīāļˆāļąāļĒ&#039;].run(query)
else:
return self.agents[&#039;āļ—āļąāđˆāļ§āđ„āļ›&#039;].run(query)</p>

<p>coordinator = Coordinator({&#039;āļāļēāļĢāļ§āļīāļˆāļąāļĒ&#039;: research_agent, &#039;āļ„āļ“āļīāļ•āļĻāļēāļŠāļ•āļĢāđŒ&#039;: math_agent, &#039;āļ—āļąāđˆāļ§āđ„āļ›&#039;: general_agent})</p>

<p># āļ—āļ”āļŠāļ­āļšāļĢāļ°āļšāļšāļŦāļĨāļēāļĒāļ•āļąāļ§āđāļ—āļ™
result = coordinator.run(&quot;āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ CNN āđāļĨāļ° RNN āļ„āļ·āļ­āļ­āļ°āđ„āļĢ? āđāļĨāļ°āļ„āļģāļ™āļ§āļ“ 25% āļ‚āļ­āļ‡ 120&quot;)
print(result)</p>

āļĢāļ°āļšāļšāļŦāļĨāļēāļĒāļ•āļąāļ§āđāļ—āļ™āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļŠāđˆāļ§āļ‡āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆāļāļ§āđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āđāļĨāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ•āļąāļ§āđāļ—āļ™ RAG

āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļ•āļąāļ§āđāļ—āļ™ RAG āļ‚āļ­āļ‡āđ€āļĢāļēāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļĄāļēāļ•āļĢāļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āđāļĨāļ°āđ€āļ—āļ„āļ™āļīāļ„āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡:

a) āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļĄāļēāļ•āļĢāļāļēāļĢāđ€āļŠāđˆāļ™ BLEU, ROUGE āļŦāļĢāļ·āļ­ BERTScore āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļĄāļīāļ™āļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļ‚āļ­āļ‡āđ€āļ­āļāļŠāļēāļĢāļ—āļĩāđˆāļ„āđ‰āļ™āļŦāļē:


<p>from bert_score import score</p>

<p>def evaluate_relevance(query, retrieved_doc, generated_answer):
P, R, F1 = score([generated_answer], [retrieved_doc], lang=&quot;en&quot;)
return F1.mean().item()</p>

b) āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āļ„āļļāļ“āļ āļēāļžāļ„āļģāļ•āļ­āļš

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āļ‚āļ­āļ‡āļĄāļ™āļļāļĐāļĒāđŒāļŦāļĢāļ·āļ­āļĄāļēāļ•āļĢāļāļēāļĢāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļĄāļīāļ™āļ„āļļāļ“āļ āļēāļžāļ„āļģāļ•āļ­āļš:


<p>from nltk.translate.bleu_score import sentence_bleu</p>

<p>def evaluate_answer_quality(reference_answer, generated_answer):
return sentence_bleu([reference_answer.split()], generated_answer.split())</p>

<p># āđƒāļŠāđ‰āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļĄāļīāļ™āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™

āļ—āļīāļĻāļ—āļēāļ‡āđāļĨāļ°āļ„āļ§āļēāļĄāļ—āđ‰āļēāļ—āļēāļĒāđƒāļ™āļ­āļ™āļēāļ„āļ•

āđ€āļĄāļ·āđˆāļ­āđ€āļĢāļēāļĄāļ­āļ‡āđ„āļ›āļŠāļđāđˆāļ­āļ™āļēāļ„āļ•āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ—āļ™ RAG āļĄāļĩāļ—āļīāļĻāļ—āļēāļ‡āđāļĨāļ°āļ„āļ§āļēāļĄāļ—āđ‰āļēāļ—āļēāļĒāļ—āļĩāđˆāļ™āđˆāļēāļŠāļ™āđƒāļˆāļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡:

a) RAG āđāļšāļšāļŦāļĨāļēāļĒāđ‚āļŦāļĄāļ”: āļāļēāļĢāļ‚āļĒāļēāļĒ RAG āđ€āļžāļ·āđˆāļ­āļĢāļ§āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļ āļēāļž āđ€āļŠāļĩāļĒāļ‡ āđāļĨāļ°āļ§āļīāļ”āļĩāđ‚āļ­

b) RAG āđāļšāļšāļāļĢāļ°āļˆāļēāļĒ: āļāļēāļĢāđƒāļŠāđ‰ RAG āđƒāļ™āļāļēāļ™āļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆāļāļĢāļ°āļˆāļēāļĒāđāļĨāļ°āļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§

c) āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡: āļāļēāļĢāļžāļąāļ’āļ™āļēāļ§āļīāļ˜āļĩāļāļēāļĢāđƒāļŦāđ‰āļ•āļąāļ§āđāļ—āļ™ RAG āļ­āļąāļ›āđ€āļ”āļ•āļāļēāļ™āļ„āļ§āļēāļĄāļĢāļđāđ‰āđāļĨāļ°āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡āļĄāļąāļ™

d) āļ‚āđ‰āļ­āļžāļīāļˆāļēāļĢāļ“āļēāļ”āđ‰āļēāļ™āļˆāļĢāļīāļĒāļ˜āļĢāļĢāļĄ: āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ›āļąāļāļŦāļēāļ„āļ§āļēāļĄāļĨāļģāđ€āļ­āļĩāļĒāļ‡ āļ„āļ§āļēāļĄāļĒāļļāļ•āļīāļ˜āļĢāļĢāļĄ āđāļĨāļ°āļ„āļ§āļēāļĄāđ‚āļ›āļĢāđˆāļ‡āđƒāļŠāđƒāļ™āļĢāļ°āļšāļš RAG

e) āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ›āļĢāļąāļšāļ‚āļ™āļēāļ”: āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ RAG āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āļĢāļ°āļ”āļąāļšāđƒāļŦāļāđˆāđāļĨāļ°āđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ

āļŠāļĢāļļāļ›

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļŠāļģāļŦāļĢāļąāļš RAG āļˆāļēāļāļĻāļđāļ™āļĒāđŒāđ€āļ›āđ‡āļ™āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđāļ•āđˆāļ™āđˆāļēāļžāļķāļ‡āļžāļ­āđƒāļˆ āđ€āļĢāļēāđ„āļ”āđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ RAG āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ—āļ™ LLM āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ”āđ‰āļ§āļĒāđ€āļ—āļ„āļ™āļīāļ„āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ āļāļēāļĢāđƒāļŠāđ‰āļĢāļ°āļšāļšāļŦāļĨāļēāļĒāļ•āļąāļ§āđāļ—āļ™ āđāļĨāļ°āļāļĨāļĒāļļāļ—āļ˜āđŒāđƒāļ™āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āđāļĨāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡

āļ‰āļąāļ™āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē 5 āļ›āļĩāđƒāļ™āļāļēāļĢāļĻāļķāļāļĐāļēāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ™āđˆāļēāļŠāļ™āđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Machine Learning āđāļĨāļ° Deep Learning āļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāđāļĨāļ°āļ„āļ§āļēāļĄāļŦāļĨāļ‡āđƒāļŦāļĨāļ‚āļ­āļ‡āļ‰āļąāļ™āļ—āļģāđƒāļŦāđ‰āļ‰āļąāļ™āđ€āļ‚āđ‰āļēāļĢāđˆāļ§āļĄāđƒāļ™āđ‚āļ„āļĢāļ‡āļāļēāļĢāļžāļąāļ’āļ™āļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļĄāļēāļāļāļ§āđˆāļē 50 āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĨāļēāļāļŦāļĨāļēāļĒ āđ‚āļ”āļĒāļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆ AI/ML āļ„āļ§āļēāļĄāļ­āļĒāļēāļāļĢāļđāđ‰āļ­āļĒāļēāļāđ€āļŦāđ‡āļ™āļ‚āļ­āļ‡āļ‰āļąāļ™āļĒāļąāļ‡āļ—āļģāđƒāļŦāđ‰āļ‰āļąāļ™āļŠāļ™āđƒāļˆāđƒāļ™āļ”āđ‰āļēāļ™ Natural Language Processing āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŠāļēāļ‚āļēāļ—āļĩāđˆāļ‰āļąāļ™āļ•āđ‰āļ­āļ‡āļāļēāļĢāļŠāļģāļĢāļ§āļˆāļ•āđˆāļ­āđ„āļ›