Галоўная / Артыкулы / Практычныя прытамулкі: Чым являецца генераванне з дапамогай выкарыстоўвання інфармацыі (RAG)? Практычныя рэкамендацыі

Практычныя прытамулкі: Чым являецца генераванне з дапамогай выкарыстоўвання інфармацыі (RAG)? Практычныя рэкамендацыі

Практычныя нарады: Чаму існуе генераванне з дапамогай выкарыстоўвання інфармацыі (RAG)? Практычныя падказкі: контракты, перакананні та шаблоны коду для команд, якія викорыстоўваюць гэты патерн.

1180 слоў

Наступныя прытамкі восстанавляюць практычны маршрут для выучэння кнігі «Што такое Retrieval-Augmented Generation (RAG)? Практычны падчырнік з прыкладамі на Python — Geeky Codes». Акцэнт ставяцца на контракты, пераконтроўванні і месца для коду, які можна проста заместіць, а не на мотывацыйныя аспекты.

Вы дазнаецеся, як працюе RAG, чаму LLM-ы ствараюць халюцинаціі, і створыце свой першы пайплайн Retrieval-Augmented Generation на Python.

Калі працуеце над этапам «Вы дазнаецеся, як працюе RAG», спачатку запісайте контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі список контроля дапамагае залічыць змяны ў кодзе. Зберагаюце настройкі паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функций павінны знаходзіцца ў адном месцы, якое аператары можаць пераглядзець, не чытаяўшы весь граф. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адпаведзення за кожны вызов. Без такога сляда періодычныя памылкі прадастаўця выглядаюць як багі прыемліка.

Адміністрацыя

Калі працуеце на стадыі адміністрацыі, спачатку запісайце умовы: неабяжлівыя данні, сигнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі список контролю дапамагае залічыць змяны ў кодзе пасля таго. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не дадатковым дошліваннем. Зяўляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адпаведзення за кожны вызов. Без такога следу періядычныя памылкі прадастаўця выглядаюць як багі ў прыемніку.

Расшырэнне

Калі працюеце над стадзіяй Augmented, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неяксамоства должны вказываць на адну адпаведную адпаведальнасць, а не на заплутаны ланцюг задач. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без такога следу періодычныя кантакты з прадастальнікам выглядаюць як багі ў самай прыемлівай программе.

Генераванне

Калі працюеце на стадзіі генеравання, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладзець пазнейшыя змены коду ў правільны роўн. Спрыяйце гэтай стадзіі як контракту межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задаце правіла пераканання успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без гэтага следу періадычныя памылкі прадастаўця выглядаюць як багі ў прыемніку.

                    Documents
                        │
                        ▼
                  Data Ingestion
                        │
                        ▼
                   Text Extraction
                        │
                        ▼
                    Chunking
                        │
                        ▼
                  Embedding Model
                        │
                        ▼
                 Vector Database
──────────────────────────────────────────

                  User Question
                        │
                        ▼
                Query Embedding
                        │
                        ▼
                 Similarity Search
                        │
                        ▼
              Top-K Relevant Chunks
                        │
                        ▼
                 Prompt Builder
                        │
                        ▼
                  Large Language Model
                        │
                        ▼
                     Final Answer
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

documents = [
    "Employees receive 20 days of paid leave every year.",
    "Annual bonuses are paid in December.",
    "Health insurance covers hospitalization expenses."
]

model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = model.encode(documents)

index = faiss.IndexFlatL2(embeddings.shape[1])

index.add(np.array(embeddings).astype("float32"))

query = "How many leave days do employees receive?"

query_embedding = model.encode([query])

D, I = index.search(
    np.array(query_embedding).astype("float32"),
    k=1
)

print(documents[I[0][0]])

Пашырэныя вызовы у працоўным режыме

Калі працуеце над стадзіяй «Звычныя вызовы практычнай експлуатацыі», спачатку запісаце кантракт: неабяжлівыя даннэ, сигнал успеху і тое, што выканаецца у разы ўзельнага неяксамоства. Такі чэрніцкі ліст дапамагае залічваць пазнейшыя змены коду чыста.

Ключовыя выводы

Этап «Ключовыя вывароткі» працюе наўзям лепш, калі яго спрыяваць як мерыемую паверхню. Запісаце адна «золатая» транскрыпцыю, адин прыклад неудачы і прыметку па вярнэнню да пачатковага стану, прычым расшырюючы сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Зафіксавайте інтэрпретара і файл з правіламі залежнасцяў прычым выучаеце цикл. Разніця ў настройках межу лептопам і системай CI — гэта найчастэйшая тыха прычына збою ў дэманстраціях API.

Справакі

Этап апелляцый работае наяўней, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыяйце гэтам этапу як кантракту межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыя успеху і не падзеўляйцеся частым, непазначаным завершэнням задачы. Зафіксавайце версію інтэрпретара і файл з правамі на залежнасці пры тэхнічным навучэнні. Нестабільнае падключэнне межа ноутбукам і системай CI ёсць найчастэйшым прычынам непазначанага зламу пад час дэманстрацый API.

Чек-ліст для эксплуатацыі

Для этапа чек-ліста для эксплуатацыі задаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння перш чым зменіць код. Аператары должны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан системы.

Зберагаеце настройкі зовні коду прыемліка. Файлы сераўнавання, сховішчы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжнага чытання всіх дадзеных.

Раздзеляйце стварэнне кліента ад цыклу перадачы паведамленняў, каб было можна зменіць прадаўцаў без перапісвання машыны стану размовы.

Апранавайце показнік запамятовання на фіксаванай сэтцы пытанняў прычым регулюванні запрошэнняў. Змена запрошэнняў рэдка калі выправляе слабую систему пошуку.

Заморажавайце «золатую» сэтку настройкаў прычым змене запрошэнняў або модэляў. Змена як самай системы, так і критэрыяў ацэнкі маскуюць можлывыя занепады якосці.

Дадзейснавайце тэст на працягласць функцыональнасці, які перацягвае критычны маршрут у процесе інтеграцыйных тэстаў з викорыстанам фіксованых даных, а не рэальных платных API, калі тое дазволяе бюджет.

Перш чым запускать стак, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычных лянцоў і паказваце способы абвяртання. У спільных сэрвісах неабходны ліміты частоты запытанняў, пераказы наявнасці праваў на выкарыстоўванне ресурсаў і чысткі власнік для змены секрэтных даных. Валіце надзейнасць працы над красавімі, але разовымі дэманстрацыйнымі прыкладамі.

Прыметка для ce641ce6bc02: не кладзіце ключы прадаўцаў у репазітарый, задаце максимальную кантитатыву токенаў на сесію і зберагачыце транскрыпты празаўседліва з фіксатрамі для ацэнкі, каб пазнейшыя замены модэляў заставаліся пораўнанымі.