AGI āđāļĨāļ° AI āđāļŦāđāļāļāļāļēāļāļ
āļŠāļĢāđāļēāļāļāļąāļ§āđāļāļ LLM āļŠāļģāļŦāļĢāļąāļ RAG āļāļēāļāļĻāļđāļāļĒāđāđāļĨāļ°āļāļ·āđāļ āđ : āļāļđāđāļĄāļ·āļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ
āđāļĄāđāļāļĨ LLM āđāļāđāļ GPT-3, GPT-4 āđāļĨāļ°āļāļđāđāļāļĩāđāđāļāđāļāđāļāđāļāđāļāļāļāļĢāđāļŠāļāļāļāļāļ§āļāđāļāļēāļĄāļąāļāļāļ°āļāļīāđāļāļĢāļāđāļāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒāđāļĨāļ°āļāļēāļāļāļĢāļąāđāļāļŠāļĢāđāļēāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļĄāđāļāļđāļāļāđāļāļāļŦāļĢāļ·āļ âhallucinationsâ
āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļāļģāļĨāļāļāļāļĩāđāļāđāļ§āļĒāđāļāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨ (Retrieval-Augmented Generation, RAG) āđāļāđāļāđāļāļāļāļīāļāļāļĩāđāļĢāļ§āļĄāļāļĨāļąāļāļāļāļ LLM āļāđāļ§āļĒāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāļāļēāļāļ āļēāļĒāļāļāļ RAG āļāđāļ§āļĒāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āđāļāļ·āđāļāļāļ·āļāđāļāđāđāļāļĒāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāļāļĩāđāļāļđāļāļāđāļāļāđāļĨāļ°āļāļąāļāļŠāļĄāļąāļĒ
āđāļāļāļāļāļ§āļēāļĄāļāļĩāđ āđāļĢāļēāļāļ°āļŠāļģāļĢāļ§āļāļ§āļīāļāļĩāļāļēāļĢāļŠāļĢāđāļēāļāļāļąāļ§āđāļāļ LLM āļŠāļģāļŦāļĢāļąāļ RAG āļāļēāļāļĻāļđāļāļĒāđ āđāļāļĒāļāļēāļĢāļāļđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāļĩāđāļĒāļ§āļāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļ āļāļēāļĢāđāļāđāļāļēāļ āđāļĨāļ°āđāļāļāļāļīāļāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒ āđāļĢāļēāļāļ°āļāļĢāļāļāļāļĨāļļāļĄāļāļļāļāļāļĒāđāļēāļāļāļąāđāļāđāļāđāļāļ·āđāļāļāļēāļāļāļāļ RAG āđāļāļāļāļāļķāļāļāļēāļĢāļŠāļĢāđāļēāļāļāļąāļ§āđāļāļ LLM āļāļĩāđāļāļąāļāļāđāļāļāļāļķāđāļāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļĢāđāļŦāđāđāļŦāļāļļāļāļĨāđāļĨāļ°āļāļģāđāļāļīāļāļāļēāļĢāđāļāđ
āļāđāļāļāļāļĩāđāđāļĢāļēāļāļ°āđāļĢāļīāđāļĄāļŠāļĢāđāļēāļāļāļąāļ§āđāļāļ LLM āļāļāļāđāļĢāļē āļĄāļēāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļąāļāļāđāļāļāļ§āđāļē RAG āļāļ·āļāļāļ°āđāļĢāđāļĨāļ°āļāļģāđāļĄāļĄāļąāļāļāļķāļāļŠāļģāļāļąāļ
RAG āļŦāļĢāļ·āļ Retrieval-Augmented Generation āđāļāđāļāđāļāļ§āļāļēāļāđāļāļāļāļŠāļĄāļāļĩāđāļĢāļ§āļĄāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāđāļāđāļēāļāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄ āđāļāļĢāļ°āļāļ RAG:
- āļāļģāļāļēāļĄāļāļ°āļāļđāļāđāļāđāđāļāļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļēāļāļāļēāļāļāđāļāļĄāļđāļĨāļāļ§āļēāļĄāļĢāļđāđ
- āļāđāļāļĄāļđāļĨāđāļŦāļĨāđāļēāļāļąāđāļāļāļ°āļāļđāļāļŠāđāļāđāļāđāļēāđāļāđāļāđāļĄāđāļāļĨāļ āļēāļĐāļēāļāļĢāđāļāļĄāļāļąāļāļāļģāļāļēāļĄāđāļāļīāļĄ
- āđāļĄāđāļāļĨāļāļ°āļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļāļāļāļĨāļąāļāđāļāļĒāļāļēāļĻāļąāļĒāļāļģāļāļēāļĄāđāļĨāļ°āļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļāļŦāļē
āđāļāļ§āļāļēāļāļāļĩāđāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāļŦāļĨāļēāļĒāļāļĢāļ°āļāļēāļĢ:
- āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļĩāđāļāļĩāļāļķāđāļ: āđāļāļĒāļāļēāļĢāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļāđāļēāļāļāļīāļāļāļēāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļāļŦāļē RAG āļĨāļāļāļēāļĢ âhallucinationsâ āđāļĨāļ°āļāļĢāļąāļāļāļĢāļļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāđāļāđāļāđāļāļāļĢāļīāļ
- āļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒ: āļāļēāļāļāđāļāļĄāļđāļĨāļāļ§āļēāļĄāļĢāļđāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāđāļāļāđāļāđāļāđāļāļĒāđ āļāļģāđāļŦāđāļĢāļ°āļāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒ
- āļāļ§āļēāļĄāđāļāļĢāđāļāđāļŠ: āļĢāļ°āļāļāļŠāļēāļĄāļēāļĢāļāđāļŦāđāđāļŦāļĨāđāļāļāđāļāļĄāļđāļĨāļŠāļģāļŦāļĢāļąāļāļāđāļāļĄāļđāļĨāļāļāļāļĄāļąāļ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļĢāļ§āļāļŠāļāļāļāđāļāđāļāđāļāļāļĢāļīāļāđāļāđ
āļāļēāļĢāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļąāļ§āđāļāļ LLM
Â
āđāļĄāļ·āđāļāļāļļāļāđāļāļāļīāļāļāļąāļāļāļąāļāļŦāļēāļāļĩāđāđāļĄāđāļĄāļĩāļāļģāļāļāļāļāđāļēāļĒāđ āļāļļāļāļĄāļąāļāļāļ°āļāđāļāļāļāļģāļāļēāļĄāļāļąāđāļāļāļāļāļŦāļĨāļēāļĒāļāļąāđāļāļāļāļ āļāļīāļāļāļĒāđāļēāļāļĢāļāļāļāļāļ āđāļĨāļ°āļāļāļāļģāļŠāļīāđāļāļāļĩāđāļāļļāļāđāļāđāļĨāļāļāđāļĨāđāļ§ āļāļąāļ§āđāļāļ LLM āđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāđāļāđāđāļāļŠāļāļēāļāļāļēāļĢāļāđāđāļŦāļĨāđāļēāļāļĩāđāđāļāļĒāđāļāļāļēāļ°āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāđāļĄāđāļāļĨāļ āļēāļĐāļē āļāļ§āļāđāļāļēāļĢāļ§āļĄāļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāđāļāļĄāļđāļĨāļāļĒāđāļēāļāļĨāļ°āđāļāļĩāļĒāļ āļāļēāļĢāļ§āļēāļāđāļāļāđāļāļīāļāļāļĨāļĒāļļāļāļāđ āļāļēāļĢāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨ āđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļēāļāļāļēāļĢāļāļĢāļ°āļāļģāđāļāļāļāļĩāļāđāļāļ·āđāļāđāļāđāļāļąāļāļŦāļēāļāļĩāđāļāļąāļāļāđāļāļ
āļāļąāļ§āđāļāļ LLM āļāļ·āļāļāļ°āđāļĢ?
āļāļąāļ§āđāļāļ LLM āđāļāđāļāļĢāļ°āļāļ AI āļāļĩāđāļāļąāļāļāđāļāļāļāļķāđāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļāļąāļāļāđāļāļāļāļķāđāļāļāđāļāļāļāļēāļĢāļāļēāļĢāđāļŦāđāđāļŦāļāļļāļāļĨāđāļāļāļĨāļģāļāļąāļ āļāļ§āļāđāļāļēāļŠāļēāļĄāļēāļĢāļāļāļīāļāļĨāđāļ§āļāļŦāļāđāļē āļāļāļāļģāļāļēāļĢāļŠāļāļāļāļēāļāļĩāđāļāđāļēāļāļĄāļē āđāļĨāļ°āđāļāđāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāđāļēāļāđ āđāļāļ·āđāļāļāļĢāļąāļāđāļāļĨāļĩāđāļĒāļāļāļēāļĢāļāļāļāļŠāļāļāļāļāļēāļĄāļŠāļāļēāļāļāļēāļĢāļāđāđāļĨāļ°āļĢāļđāļāđāļāļāļāļĩāđāļāđāļāļāļāļēāļĢ
āļāļīāļāļēāļĢāļāļēāļāļģāļāļēāļĄāđāļāļāđāļēāļāļāļāļŦāļĄāļēāļĒ āđāļāđāļ âāļāļĨāļāļēāļāļāļāļŦāļĄāļēāļĒāļāļĩāđāļāļēāļāđāļāļīāļāļāļķāđāļāļāļēāļāļāļēāļĢāļĨāļ°āđāļĄāļīāļāļŠāļąāļāļāļēāđāļāļāđāļāđāļāļāļŦāļāļķāđāļāđāļāđāļāļĨāļīāļāļāļĢāđāđāļāļĩāļĒāļāļ·āļāļāļ°āđāļĢ?â āđāļĄāđāļāļĨ LLM āļāļ·āđāļāļāļēāļāļāļĢāđāļāļĄāļĢāļ°āļāļ RAG āļŠāļēāļĄāļēāļĢāļāļāđāļāļŦāļēāļāđāļāļĄāļđāļĨāļāļĩāđāļāļģāđāļāđāļāļāļēāļāļāļēāļāļāđāļāļĄāļđāļĨāļāļāļŦāļĄāļēāļĒ
āļŠāļģāļŦāļĢāļąāļāļŠāļāļēāļāļāļēāļĢāļāđāļāļĩāđāļāļąāļāļāđāļāļāļāļ§āđāļēāļāļĩāđ: âāđāļĄāļ·āđāļāļāļīāļāļēāļĢāļāļēāļāļāļŦāļĄāļēāļĒāļāļ§āļēāļĄāđāļāđāļāļŠāđāļ§āļāļāļąāļ§āđāļŦāļĄāđ āļāļļāļāļŠāļĢāļĢāļāļāļēāļāļāļāļŦāļĄāļēāļĒāļāļąāđāļ§āđāļāļāļĩāđāļāļĢāļīāļĐāļąāļāļāđāļēāļāđ āđāļāļāļīāļ āđāļĨāļ°āļĻāļēāļĨāļāļāļāļŠāļāļāļāļāđāļāļāļĢāļ°āđāļāđāļāđāļŦāļĨāđāļēāļāļĩāđāļāļĒāđāļēāļāđāļĢ?â āļāļģāļāļēāļĄāļāļĩāđāļĨāļķāļāļāļ§āđāļēāļāļēāļĢāļāđāļāļŦāļēāļāđāļāđāļāđāļāļāļĢāļīāļāđāļāļĩāļĒāļāļāļĒāđāļēāļāđāļāļĩāļĒāļ§ āļĄāļąāļāđāļāļĩāđāļĒāļ§āļāļąāļāļāļēāļĢāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļāđāļŦāļĄāđ āļāļĨāļāļĢāļ°āļāļāļāđāļāļāļĢāļīāļĐāļąāļāļāđāļēāļāđ āđāļĨāļ°āļāļēāļĢāļāļāļāļŠāļāļāļāļāļāļāļĻāļēāļĨ āļāļąāļ§āđāļāļ LLM āļāļ°āđāļāđāļāļāļēāļāļāļĩāđāļāļāļāđāļāđāļāļāļēāļāļĒāđāļāļĒ āđāļāđāļ āļāļēāļĢāļāđāļāļŦāļēāļāļāļŦāļĄāļēāļĒāļĨāđāļēāļŠāļļāļ āļāļēāļĢāļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāļĢāļāļĩāļāļēāļāļāļĢāļ°āļ§āļąāļāļīāļĻāļēāļŠāļāļĢāđ āļāļēāļĢāļŠāļĢāļļāļāđāļāļāļŠāļēāļĢāļāļēāļāļāļāļŦāļĄāļēāļĒ āđāļĨāļ°āļāļēāļĢāļāļēāļāļāļēāļĢāļāđāđāļāļ§āđāļāđāļĄāļāļēāļĄāļĢāļđāļāđāļāļ
āļŠāđāļ§āļāļāļĢāļ°āļāļāļāļāļāļāļāļąāļ§āđāļāļ LLM
āļāļąāļ§āđāļāļ LLM āđāļāļĒāļāļąāđāļ§āđāļāļāļĢāļ°āļāļāļāļāđāļ§āļĒāļŠāđāļ§āļāļāļĢāļ°āļāļāļ 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["OPENAI_API_KEY"] = "your-api-key-here"</p>
āļāļēāļĢāļŠāļĢāđāļēāļāļĢāļ°āļāļ RAG āļāļĩāđāđāļĢāļĩāļĒāļāļāđāļēāļĒ
āļāļāļāļāļĩāđāđāļĢāļēāļĄāļĩāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļĢāđāļāļĄāđāļĨāđāļ§ āļĄāļēāļāļģāļĢāļ°āļāļ RAG āļāļ·āđāļāļāļēāļāļāļąāļ āđāļĢāļēāļāļ°āđāļĢāļīāđāļĄāļāđāļāļāđāļ§āļĒāļāļēāļĢāļŠāļĢāđāļēāļāļāļēāļāļāļ§āļēāļĄāļĢāļđāđāļāļēāļāļāļļāļāđāļāļāļŠāļēāļĢ āļāļēāļāļāļąāđāļāđāļāđāļāļēāļāļāļ§āļēāļĄāļĢāļđāđāļāļĩāđāđāļāļ·āđāļāļāļāļāļāļģāļāļēāļĄ
āļāļąāđāļāļāļāļāļāļĩāđ 1: āđāļāļĢāļĩāļĒāļĄāđāļāļāļŠāļēāļĢ
āļāđāļāļāļāļ·āđāļāđāļĢāļēāļāđāļāļāđāļŦāļĨāļāđāļĨāļ°āđāļāļĢāļĩāļĒāļĄāđāļāļāļŠāļēāļĢāļāļāļāđāļĢāļē āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āļŠāļĄāļĄāļāļīāļ§āđāļēāđāļĢāļēāļĄāļĩāđāļāļĨāđāļāđāļāļāļ§āļēāļĄāļāļ·āđāļ knowledge_base.txt āļāļĩāđāļĄāļĩāļāđāļāļĄāļđāļĨāļāļēāļāļāļĒāđāļēāļāđāļāļĩāđāļĒāļ§āļāļąāļ AI āđāļĨāļ°āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ
<p># āđāļŦāļĨāļāđāļāļāļŠāļēāļĢ loader = TextLoader("knowledge_base.txt") 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="stuff", retriever=vectorstore.as_retriever())</p>
āļāļąāđāļāļāļāļāļāļĩāđ 3: āļŠāļāļāļāļēāļĄāļĢāļ°āļāļ
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļāļāļāļēāļĄāļĢāļ°āļāļ RAG āļāļāļāđāļĢāļēāđāļāđāđāļĨāđāļ§:
<p>query = "āļāļēāļĢāļāļĢāļ°āļĒāļļāļāļāđāđāļāđāļŦāļĨāļąāļāļāļēāļĢāļāļāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāļĄāļĩāļāļ°āđāļĢāļāđāļēāļ?" 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 = "Calculator" description = "āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāļāļēāļāļāļāļīāļāļĻāļēāļŠāļāļĢāđ"</p> <p>def _run(self, query: str) try: return str(eval(query)) except: return "āđāļĄāđāļŠāļēāļĄāļēāļĢāļāļāļģāļāļ§āļāđāļāđ āđāļāļĢāļāļāļĢāļ§āļāļŠāļāļāļ§āđāļēāļāđāļāļĄāļđāļĨāļāļāļāļāļļāļāļāļđāļāļāđāļāļ"</p> <p># āļŠāļĢāđāļēāļāļāļąāļ§āđāļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļ search = DuckDuckGoSearchRun() calculator = CalculatorTool()</p> <p># āļāļīāļĒāļēāļĄāđāļāļĢāļ·āđāļāļāļĄāļ·āļ tools = [Tool(name="āļāđāļāļŦāļē",func=search.run,description="āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāļāļąāđāļ§āđāļ"), Tool(name="RAG-QA",func=qa.run,description="āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāđāļāļĩāđāļĒāļ§āļāļąāļ AI āđāļĨāļ°āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ"), Tool(name="Calculator",func=calculator._run,description="āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļāļ§āļāļāļ·āđāļāļāļēāļ") ]</p> <p># āļāļīāļĒāļēāļĄāļāļąāļ§āđāļāļ agent = initialize_agent(tools, OpenAI(temperature=0), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True )</p>
āļāļāļāļāļĩāđāđāļĢāļēāļĄāļĩāļāļąāļ§āđāļāļāļāļķāđāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļĢāļ°āļāļ RAG āļāļāļāđāļĢāļē āļāđāļāļŦāļēāļāļēāļāļāļīāļāđāļāļāļĢāđāđāļāđāļ āđāļĨāļ°āļāļģāļāļ§āļāļāļ·āđāļāļāļēāļāđāļāđ āļĄāļēāļāļāļŠāļāļāļĄāļąāļ:
<p>result = agent.run("āļāļ§āļēāļĄāđāļāļāļāđāļēāļāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāđāļāļāļĄāļĩāļāļđāđāļŠāļāļāđāļĨāļ°āđāļĄāđāļĄāļĩāļāļđāđāļŠāļāļāļāļ·āļāļāļ°āđāļĢ? āđāļĨāļ° 15% āļāļāļ 80 āļāļ·āļāđāļāđāļēāđāļĢ?") 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("facebook/dpr-question_encoder-single-nq-base") context_encoder = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")</p> <p># āļāļąāļāļāđāļāļąāļāđāļāļāļēāļĢāļāļąāļāļāļąāļ§āļāđāļēāļ def encode_passages(passages): return context_encoder(passages, max_length=512, return_tensors="pt").pooler_output</p> <p># āļāļąāļāļāđāļāļąāļāđāļāļāļēāļĢāļāļąāļāļāļąāļ§āļāļģāļāļēāļĄ def encode_query(query): return question_encoder(query, max_length=512, return_tensors="pt").pooler_output</p>
b) āļāļēāļĢāļāļĒāļēāļĒāļāļģāļāļēāļĄ
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļēāļĢāļāļĒāļēāļĒāļāļģāļāļēāļĄāđāļāļ·āđāļāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļēāļĢāļāđāļāļŦāļē:
<p>from transformers import T5ForConditionalGeneration, T5Tokenizer</p>
<p>model = T5ForConditionalGeneration.from_pretrained("t5-small")
tokenizer = T5Tokenizer.from_pretrained("t5-small")</p>
<p>def expand_query(query):
input_text = f"āļāļĒāļēāļĒāļāļģāļāļēāļĄ: {query}"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
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"āļāļēāļĄāļāļĨāļĨāļąāļāļāđāļāļĩāđ: '{result}' āļāļģāļāļēāļĄāļāļĩāđāļāļ§āļĢāļāļēāļĄāđāļāļ·āđāļāđāļŦāđāđāļāđāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļāļēāļ°āđāļāļēāļ°āļāļāļāļ§āđāļēāļāļĩāđāļāļ·āļāļāļ°āđāļĢ?")
if clarification.lower().strip() == "āđāļĄāđāļĄāļĩ":
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("āļāļēāļĢāļ§āļīāļāļąāļĒ", [Tool(name="RAG-QA", func=qa.run, description="āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāđāļāļĩāđāļĒāļ§āļāļąāļ AI āđāļĨāļ°āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ")])
math_agent = SpecialistAgent("āļāļāļīāļāļĻāļēāļŠāļāļĢāđ", [Tool(name="Calculator", func=calculator._run, description="āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļāļ§āļāļāļ·āđāļāļāļēāļ")])
general_agent = SpecialistAgent("āļāļąāđāļ§āđāļ", [Tool(name="āļāđāļāļŦāļē", func=search.run, description="āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāļāļąāđāļ§āđāļ")])</p>
<p>class Coordinator:
def __init__(self, agents):
self.agents = agents</p>
<p>def run(self, query):
# āļĢāļ°āļāļļāļāļąāļ§āđāļāļāđāļŦāđāđāļāđ
if "āļāļģāļāļ§āļ" in query.lower() or any(op in query for op in ['+', '-', '*', '/']):
return self.agents['āļāļāļīāļāļĻāļēāļŠāļāļĢāđ'].run(query)
elif any(term in query.lower() for term in ['ai', 'āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāļāļāđāļāļĢāļ·āđāļāļ', 'āļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļĨāļķāļ']):
return self.agents['āļāļēāļĢāļ§āļīāļāļąāļĒ'].run(query)
else:
return self.agents['āļāļąāđāļ§āđāļ'].run(query)</p>
<p>coordinator = Coordinator({'āļāļēāļĢāļ§āļīāļāļąāļĒ': research_agent, 'āļāļāļīāļāļĻāļēāļŠāļāļĢāđ': math_agent, 'āļāļąāđāļ§āđāļ': general_agent})</p>
<p># āļāļāļŠāļāļāļĢāļ°āļāļāļŦāļĨāļēāļĒāļāļąāļ§āđāļāļ
result = coordinator.run("āļāļ§āļēāļĄāđāļāļāļāđāļēāļāļĢāļ°āļŦāļ§āđāļēāļ CNN āđāļĨāļ° RNN āļāļ·āļāļāļ°āđāļĢ? āđāļĨāļ°āļāļģāļāļ§āļ 25% āļāļāļ 120")
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="en") 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 āļāļēāļĢāļāļĢāļąāļāļāļĢāļļāļāļāđāļ§āļĒāđāļāļāļāļīāļāļāļĩāđāļāļąāļāļŠāļĄāļąāļĒ āļāļēāļĢāđāļāđāļĢāļ°āļāļāļŦāļĨāļēāļĒāļāļąāļ§āđāļāļ āđāļĨāļ°āļāļĨāļĒāļļāļāļāđāđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļĨāļ°āļāļĢāļąāļāļāļĢāļļāļ














