რა არის RAG? Retrieval-Augmented Generation მარტივად ახსნილი
RAG (retrieval-augmented generation) არის გზა, რომ AI მოდელმა კითხვებზე თქვენი საკუთარი ინფორმაციით უპასუხოს. როცა ვინმე კითხვას დასვამს, თქვენი აპი ჯერ ეძებს დოკუმენტებში ყველაზე შესაბამის ნაწყვეტებს, შემდეგ კი ამ ნაწყვეტებს კითხვასთან ერთად გადასცემს მოდელს. მოდელი პასუხს ამ ტექსტიდან წერს და არა მხოლოდ იმიდან, რაც შემთხვევით ისწავლა ტრენინგის დროს.
რატომ არის RAG მნიშვნელოვანი AI-ით აპების შექმნისას
დიდი ენობრივი მოდელი ზოგადად ბევრს იცის სამყაროზე, მაგრამ არაფერს თქვენს ბიზნესზე: თქვენს ფასებზე, პოლიტიკაზე, პროდუქტის სახელმძღვანელოზე, გასულ კვირის მხარდაჭერის მოთხოვნებზე. მას ასევე აქვს ტრენინგის ზღვარი, ამიტომ ახლო წარსულის არაფერი იცის. თუ მაინც ჰკითხავთ, შეიძლება დარწმუნებით, გონივრულად და არასწორად უპასუხოს.
ამის გამოსასწორებლად სამი ძირითადი გზა გაქვთ:
| მიდგომა | რას აკეთებს | კარგია |
|---|---|---|
| ყველაფრის prompt-ში ჩასმა | ყოველ კითხვასთან ერთად ყველა დოკუმენტის გაგზავნა | მცირე ტექსტი — რამდენიმე გვერდი |
| RAG | დოკუმენტებში ძიება, გაგზავნა მხოლოდ შესაბამისი ნაწილების | დიდი ან ცვალებადი კოლექციები: დახმარების ცენტრები, სახელმძღვანელოები, ჩანაწერები |
| Fine-tuning | მოდელის დამატებითი ტრენინგი მაგალითებზე | ტონი, ფორმატი და განმეორებადი დავალებები — არა ცვალებადი ფაქტები |
თანამედროვე მოდელები გრძელ prompt-ებს იღებენ, ამიტომ მოკლე FAQ-სთვის პირველი ვარიანტი ხშირად საკმარისია. RAG საჭირო ხდება მაშინ, როცა ტექსტი უფრო მეტია, ვიდრე ყოველ ჯერზე გაგზავნა გსურთ — რადგან ყოველი გაგზავნილი სიტყვა ფულსა და დროს ჯდება (იხილეთ როგორ ფასდება LLM API-ები).
თუ აშენებთ ფუნქციას „ისაუბრე ჩვენს დოკუმენტებთან“, მხარდაჭერის ასისტენტს ან შიდა ცოდნის ინსტრუმენტს, თითქმის აუცილებლად RAG-ის რომელიმე ფორმას აშენებთ.
ყოველდღიური ანალოგია
წარმოიდგინეთ ღია წიგნის გამოცდა. სტუდენტი, რომელსაც მეხსიერებიდან უნდა უპასუხოს, შეიძლება შეცდეს ან დაიბლუფოს. სტუდენტი, რომელსაც უფლება აქვს, ჯერ სწორ გვერდებს გადახედოს, წაიკითხოს და მერე უპასუხოს, გაცილებით საიმედოა — თუ სწორ გვერდებს იპოვის.
- სტუდენტი არის ენობრივი მოდელი.
- სახელმძღვანელო არის თქვენი დოკუმენტები.
- სწორ გვერდებზე გადაფურცვლა არის ძიება (retrieval).
- პასუხის დაწერა ამ გვერდებზე დაყრდნობით არის გენერაცია.
RAG ღია წიგნის ვერსიაა. და, გამოცდის მსგავსად, პასუხის ხარისხი დიდად არის დამოკიდებული იმაზე, იპოვეს თუ არა სწორი გვერდები.
როგორ მუშაობს RAG, ნაბიჯ-ნაბიჯ
ტიპური RAG სისტემა ორ ფაზას მოიცავს.
დოკუმენტების მომზადება (წინასწარ კეთდება):
- შეაგროვეთ საწყისი მასალა — დახმარების სტატიები, PDF-ები, პოლიტიკა, პროდუქტის მონაცემები.
- დაყავით (chunk): გრძელი დოკუმენტები პატარა ნაწილებად დაყავით, ხშირად რამდენიმე აბზაცად, რომ ძიებამ მხოლოდ შესაბამისი ნაწილი დააბრუნოს.
- Embed თითოეული ნაწილი: გაუგზავნეთ embedding მოდელს, რომელიც ტექსტს embedding-ად აქცევს — რიცხვების გრძელ სიად, რომელიც მის აზრს ინახავს. ერთმანეთთან დაკავშირებულ თემებზე დაწერილ ტექსტებს მსგავსი რიცხვები აქვთ.
- შეინახეთ ნაწილები და მათი embedding-ები მონაცემთა ბაზაში, რომელსაც შეუძლია მსგავსებით ძიება (ხშირად უწოდებენ vector database-ს ან vector index-ს).
კითხვაზე პასუხი (ყოველ ჯერზე კეთდება):
- Embed კითხვა იმავე embedding მოდელით.
- მოიძიეთ ის ნაწილები, რომელთა embedding-ები კითხვის embedding-ს ყველაზე ახლოს არის — მაგალითად, პირველი ხუთი.
- ააწყვეთ prompt: ინსტრუქციები, ნაპოვნი ნაწილები და კითხვა.
- გენერირება: ენობრივი მოდელი წერს პასუხს ამ ნაწილებზე დაყრდნობით, იდეალურად მიუთითებს, რომელი გამოიყენა.
მუშაობს სწორედ ძიება აზრის მიხედვით: კითხვა „ჩემი თანხის დაბრუნება“ შეიძლება იპოვოს ნაწილი სათაურით „დაბრუნების პოლიტიკა“, მაშინ როცა მათ საერთო სიტყვა არ აქვთ.
სამუშაო მაგალითი: სპორტდარბაზის დახმარების ასისტენტი
ვთქვათ, სპორტდარბაზს 40 დახმარების სტატია აქვს და სურს ჩატ-ასისტენტი თავის ვებგვერდზე. წევრი კითხულობს: „შემიძლია ჩემი აბონემენტი შევაჩერო მოგზაურობის დროს?“
აპი embed-ავს კითხვას და იღებს სამ ყველაზე ახლო ნაწილს. ერთ-ერთი ასე წერს:
აბონემენტის შეჩერება: თვიური გეგმის წევრებს შეუძლიათ
აბონემენტის შეჩერება წელიწადში მაქსიმუმ 2 თვით.
მოითხოვეთ რეცეფციაზე ან აპში მინიმუმ 7 დღით ადრე
შეჩერების დაწყებამდე.
მოდელს გაგზავნილი prompt დაახლოებით ასეთია:
შენ ხარ Northside Gym-ის დახმარების ასისტენტი.
უპასუხე მხოლოდ ქვემოთ მოცემული წყაროებიდან. თუ პასუხი მათში არ არის,
თქვი, რომ არ იცი, და შესთავაზე რეცეფციასთან დაკავშირება.
მიუთითე, რომელი წყარო გამოიყენე.
[წყარო 1: აბონემენტის შეჩერება] თვიური გეგმის წევრებს შეუძლიათ შეაჩერონ...
[წყარო 2: აბონემენტის გაუქმება] ...
[წყარო 3: სტუმრის ბარათები] ...
კითხვა: შემიძლია ჩემი აბონემენტი შევაჩერო მოგზაურობის დროს?
მოდელი პასუხობს: „დიახ — თვიურ გეგმაზე შეგიძლიათ აბონემენტი წელიწადში მაქსიმუმ ორი თვით შეაჩეროთ. მოითხოვეთ რეცეფციაზე ან აპში მინიმუმ 7 დღით ადრე (წყარო: აბონემენტის შეჩერება).“
დარბაზს არაფერი გადაუტრენინგებია. როცა შეჩერების წესს ცვლის, ის სტატიას აახლებს, აპი ამ ნაწილს თავიდან embed-ავს და შემდეგი პასუხი უკვე ახალს ასახავს.
ძირითადი ტერმინები
| ტერმინი | მნიშვნელობა |
|---|---|
| LLM | დიდი ენობრივი მოდელი — AI, რომელიც პასუხს წერს. იხილეთ რა არის LLM. |
| Embedding | რიცხვების სია, რომელიც ტექსტის ნაწილის აზრს წარმოადგენს. |
| Embedding მოდელი | მოდელი, რომელიც embedding-ებს ქმნის. ჩვეულებრივ ცალკეულია და გაცილებით იაფია, ვიდრე ჩატის მოდელი. |
| Chunk (ნაწილი) | დოკუმენტის ნაწილი, რომელიც დამოუკიდებლად შეიძლება მოიძებნოს. |
| Vector database / vector ძიება | საცავი, რომელიც პოულობს მსგავსი embedding-ების მქონე ელემენტებს. ზოგიერთ ჩვეულებრივ მონაცემთა ბაზასაც აქვს ეს — მაგალითად, Postgres pgvector გაფართოების მეშვეობით. |
| Top-k | რამდენი ნაწილი ბრუნდება თითო კითხვაზე. |
| Hybrid search | აზრობრივი ძიების შერწყმა ჩვეულებრივ საკვანძო სიტყვების ძიებასთან, რაც ეხმარება ზუსტ ტერმინებს, მაგალითად პროდუქტის კოდებს. |
| Context window | მაქსიმალური ტექსტი, რომელსაც მოდელი ერთ მოთხოვნაში მიიღებს. |
| Grounding / citations | პასუხის დაკავშირება კონკრეტულ მოძიებულ წყაროებთან და მათი ჩვენება. |
გავრცელებული მცდარი წარმოდგენები
- „RAG მოდელს ჩემს მონაცემებზე ატრენინგებს.“ არ ატრენინგებს. მოდელი არაფერში იცვლება; ის მხოლოდ კითხვის დროს კითხულობს დამატებით ტექსტს.
- „RAG ნიშნავს, რომ ჰალუცინაციები აღარ იქნება.“ ნიშნავს, რომ ნაკლები იქნება. თუ ძიება სწორ ნაწილს ვერ იპოვის ან პასუხი დოკუმენტებში არ არის, მოდელმა მაინც შეიძლება გამოიცნოს. დაავალეთ, რომ თქვას „არ ვიცი“ და შეამოწმეთ კითხვებით, რომელთა პასუხებიც იცით.
- „მჭირდება სპეციალური vector database.“ ხშირად არა. მცირე მოცულობის მონაცემებისთვის საკმარისია vector გაფართოება უკვე არსებულ მონაცემთა ბაზაზე ან თუნდაც ჩვეულებრივი საკვანძო სიტყვების ძიება.
- „დიდი ნაწილები უკეთესია.“ ძალიან დიდი ნაწილებით ბევრ შეუსაბამო ტექსტს გზავნით (მეტი ხარჯი, მეტი დაბნეულობა); ძალიან პატარა ნაწილი კი კარგავს კონტექსტს, რომელიც მას მნიშვნელობას აძლევდა. მოსალოდნელია დარეგულირება.
- „უბრალოდ ატვირთეთ ყველაფერი.“ მოძველებული, დუბლირებული ან ურთიერთსაწინააღმდეგო დოკუმენტები ურთიერთსაწინააღმდეგო პასუხებს იძლევა. წყაროს მასალის გასუფთავება ხშირად ყველაზე დიდი გაუმჯობესებაა.
- „ყველას შეუძლია ნებისმიერი დოკუმენტის ნახვა.“ მხოლოდ მაშინ, თუ ასე ააშენებთ. თუ ზოგი დოკუმენტი კონკრეტული მომხმარებლებისთვისაა პირადი, ძიებამ თავად უნდა გაფილტროს, ვინ კითხულობს — წინააღმდეგ შემთხვევაში ასისტენტმა ერთი კლიენტის მონაცემები მეორეს შეიძლება ციტირებით მიაწოდოს.
რა ჯდება
RAG ფუნქციას ჩვეულებრივ სამი მიმდინარე ხარჯი აქვს: დოკუმენტების embedding (მცირე და ძირითადად ერთჯერადი), თითო კითხვის embedding (ძალიან მცირე) და ენობრივი მოდელის გამოძახება (მთავარი ხარჯი, რომელიც იზრდება იმის მიხედვით, რამდენ ნაწილს აგზავნით). დაემატება შენახვა თქვენს მონაცემთა ბაზაში. AI პროვაიდერი ამ ხარჯებს თქვენს ანგარიშზე ათვლის, ამიტომ იქ დააყენეთ ხარჯის ლიმიტი.
რა სთხოვოთ თქვენს AI შემქმნელს
- „RAG-ის აშენებამდე შეამოწმე: საკმარისად მცირეა ჩვენი კონტენტი, რომ უბრალოდ prompt-ში ჩავრთოთ?“
- „დაყავი დახმარების სტატიები რამდენიმე აბზაციან ნაწილებად, შეინახე თითოეული ნაწილის სათაური და წყაროს ბმული და embedding-ები შეინახე ჩვენს მონაცემთა ბაზაში.“
- „გამოიყენე hybrid search — აზრობრივი და საკვანძო სიტყვებით, რომ პროდუქტის კოდები მაინც დაემთხვეს.“
- „უთხარი მოდელს, რომ უპასუხოს მხოლოდ მოძიებული წყაროებიდან, თქვას, როცა არ იცის, და ყოველი პასუხის ქვეშ აჩვენოს წყაროები.“
- „მოძებნე მხოლოდ ის დოკუმენტები, რომელთა ნახვის უფლებაც შესულ მომხმარებელს აქვს.“
- „ხელახლა embed-ე დოკუმენტი ავტომატურად, როცა ის იცვლება.“
- „AI პროვაიდერის გასაღები შეინახე სერვერზე საიდუმლოდ, არასდროს ბრაუზერში.“
- „ჩაწერე ყოველი კითხვა, მოძიებული ნაწილები და პასუხი, რომ ცუდი პასუხები გადავხედო.“
RAG Mythex-ში
Mythex არ შეიცავს მზა knowledge-base ან RAG პროდუქტს. ის წერს კოდს ამისთვის თქვენს აპში: თქვენ მოგაქვთ დოკუმენტები და თქვენი საკუთარი AI პროვაიდერის გასაღები, რომელიც ინახება როგორც პროექტის საიდუმლო, ხოლო აგენტი აშენებს ძიებისა და ჩატის ნაწილებს, შენახვისთვის კი იყენებს პროექტის Postgres მონაცემთა ბაზას. პროვაიდერის გამოყენება თქვენი პროვაიდერის ანგარიშზე ითვლება და არა Mythex-ის კრედიტებში. დოკუმენტაცია გვირჩევს, დაიწყოთ ერთი მარტივი AI ფუნქციით და RAG მაშინ დაამატოთ, როცა ის იმუშავებს — იხილეთ AI აპის აშენება, და ჩვენი გზამკვლევები AI ჩატბოტის აპის აშენების და AI ფუნქციების დამატების შესახებ.
კითხვები
რა არის RAG მარტივად რომ ვთქვათ?
RAG (retrieval-augmented generation) არის გზა, რომ AI მოდელმა თქვენს საკუთარ ინფორმაციაზე დაყრდნობით უპასუხოს. სანამ მოდელი უპასუხებს, თქვენი აპი ეძებს დოკუმენტებში ყველაზე შესაბამის ნაწყვეტებს კითხვისთვის და ამატებს მათ prompt-ში, ისე რომ პასუხი ამ ტექსტს ეყრდნობა და არა მხოლოდ იმას, რაც მოდელმა ტრენინგის დროს ისწავლა.
RAG ამოძრავებს AI-ს ჩემს მონაცემებზე ტრენინგით?
არა. RAG საერთოდ არ ცვლის მოდელს. ის კითხვის დასმის მომენტში ეძებს შესაბამის ტექსტს და კითხვასთან ერთად გადასცემს მოდელს. დოკუმენტის განახლების შემდეგ შემდეგი პასუხი შეიძლება უკვე ახალ ვერსიას დაეყრდნოს.
RAG იგივეა, რაც fine-tuning?
არა. Fine-tuning ცვლის მოდელის ქცევას მაგალითებზე დამატებითი ტრენინგით, რაც უფრო ნელია და უკეთესია სტილისა და ფორმატისთვის. RAG მოდელს აძლევს ფაქტებს, რომლებიც კითხვის დროს უნდა წაიკითხოს — ეს უკეთესია ცვალებადი ან ზუსტად ციტირებადი ინფორმაციისთვის.
RAG აჩერებს AI-ს ჰალუცინაციებს?
ამცირებს, მაგრამ მთლიანად არ აქრობს. თუ ძიება არასწორ ნაწყვეტებს იპოვის ან პასუხი თქვენს დოკუმენტებში არ არის, მოდელმა მაინც შეიძლება გამოიცნოს. კარგი RAG აპები მოდელს ეუბნებიან, რომ თქვას, როცა არ იცის, და აჩვენებენ წყაროებს, რომლებიც გამოიყენეს.