LlamaIndex RAG: практычны гід
LlamaIndex RAG на практыцы: што такое RAG, дзе месца LlamaIndex і поўны канвеер ад загрузкі і індэксавання дакументаў да запытаў.
Крыніцы: LlamaIndex RAG: A Practical Guide to Building Smarter AI Applications
Існавайце гэты документ як перапрацоўаную версію ідэй з кнігі “LlamaIndex RAG: A Practical Guide to Building Smarter AI Applications” для аператараў: чыткія этапы, аранжаваныя блакі з кодам і прыметкі па вярненню, якія застаюцца пасля перадачы. Этап Аналізу работае найкрашча, калі яго розглядаць як вімерную плошчу. Запісайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і прыметку па вярненню да пачатковага стану пры розшырэнні масштаба. Запісвайце часы выканання і косты токенавання або запыткаў па боку функцыйнальных рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы.
Што такое RAG?
Для этапы «Што саме ёсцца RAG» неабяжна прадзефінавацыя вхідных дадзеных, адпраўніка крока і крэтарыяў завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчыма было перзапусціць крок з вядомага пункту контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы серавэйса, хранілішчы секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Паказваць трэба тые часткі тэксту, якія фактычна ляглі в основу адпаведнай адказы. Без цых цітатаў працавнікі не зможуць адразніць галюцынацыю ад прасоўкі ў індэксаванні.
User
↓
Question
↓
LLM
↓
Answer
User Question
↓
Retrieval
↓
Relevant Documents
↓
LLM Prompt
↓
LLM
↓
Answer
Дзе паслужае LlamaIndex
Для этапы «Дзея LlamaIndex падходзіць» неабяжна ўскладненне вхідных дадзенаў, адпаведальнага за крок і крэатарыяў выходу прычым перад зменай коду. Аператары павінны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вяснавання проблем. Перапрыбуткі, людзкія перакрыцці і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Паказваць часткі тэксту, якія фактычна сталі падставай для адпаведнай адказу. Без ціх цытатаў аператары не зможаць разлічыць галюцынацію ад прасоў у індэксаванні.
Your Data
│
┌────────────┼────────────┐
↓ ↓ ↓
PDFs Websites Databases
│ │ │
└────────────┼────────────┘
↓
LlamaIndex
↓
Data Ingestion
↓
Chunks
↓
Embeddings
↓
Vector Store
↓
Retriever
↓
Reranker
↓
LLM
↓
Answer
Практыка LlamaIndex RAG
Для стадзіі The LlamaIndex RAG Pipeline неабяжна ўскладнення вхідных дадзеных, адпаведальнага за штрык і крэтыніяў завершэння пры перадзмене коду. Аперацыйныя працавнікі павінны магчымае запускаць штрык з вядомай точкі контролю без неабяжнага вычыслення скрытых станоў. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі штрык не выйшаў, прычына неабяжна паказваць на адну конкрэтную адпаведальнасць, а не на заплутаную структуру пайплайну. Прыкладзіце фрагменты тэксту, якія насправды сталі падставай для адпаведнай адказу. Без ціх прамянаў аперацыйныя працавнікі не зможуць разлічыць галюцынацію ад працягу індэксавання. Для стадзіі The LlamaIndex RAG Pipeline неабяжна ўскладнення вхідных дадзеных, адпаведальнага за штрык і крэтыніяў завершэння пры перадзмене коду. Аперацыйныя працавнікі павінны магчымае запускаць штрык з вядомай точкі контролю без неабяжнага вычыслення скрытых станоў. Запісвайце час выканання і кост токенав або запытаў разам з функцыйнаямі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльны рэжым.
< p>Сераўны.Documents
↓
Loading
↓
Parsing
↓
Chunking
↓
Indexing
↓
Retrieval
↓
Context Selection
↓
Generation
1. Заваносьце вашых дадзеных
Калі працуеце над стадыяй «Заваносьце вашых дадзеных», спачатку запісайце умовы: неабяжныя даны, сігнал успеху і тое, што выканаецца у разы ўзельнага неякшчына. Такі чарт дапамагае заліцвачыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы сераўна, храненні секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабяжнага чытання всіх элементаў. Перад налагоджэньем запітоў пераканайцеся, што сістэма правільна адзначае наяўныя даны, выкарыстоўваючы фіксаваны набор запітаў. Частая зміна запітоў рэдка калі вярнайша слабую эфектыўнасць пошуку.
PDFs
Markdown
Web pages
Notion
Google Drive
SQL databases
APIs
CSV files
documents = load_documents("data/")
Offline / ingestion time
↓
Prepare the knowledge
Online / query time
↓
Retrieve the knowledge
2. Раздзелены дакументы на часткі
Калі працюеце над этапам «Разбіць дакументы на 2 часты», спачатку запісайце умовы контракту: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разы ў частковай нявыполненасці. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць адпаведнымі. Документавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія перакрыцці і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшай дапрацоўкі. Перад налаштаваннем запітаў пераканайце рэкалі на фіксаваным наборы запітанняў. Змена запітоў рэдка калі вярнуе слабую якасць адзысквання інформацыі.
Document
↓
Chapter
↓
Section
↓
Paragraph
↓
Chunk
chunks = split_document(
document,
chunk_size=512,
)
Huge chunk
↓
Lots of irrelevant information
↓
Large prompt
↓
Higher latency
Tiny chunk
↓
Missing context
↓
Poor retrieval
3. Стварыць эмбедынгі
Калі працуеце над 3 стадзямі «Стварэння эмбеддынгаў», спачатку запісайце умовы вярбавання: неабходныя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцьваты пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок не выйшоў, прычына нявыполнення павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Перад налаштаваннем запітоў пераканайцеся ў рэкалі на фіксаваным наборэ запітанняў. Частае змена запітоў рэдка калі-небудзь выправляе слабкую эфектыўнасць адзысквання інформацыі. Калі працуеце над 3 стадзямі «Стварэння эмбеддынгаў», спачатку запісайце умовы вярбавання: неабходныя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцьваты пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзултатамі. Відразувыя даны пра косты запобегаюць неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.
"How can I reset my password?"
"What should I do if I forgot my login credentials?"
Text
↓
Embedding Model
↓
[0.12, -0.42, 0.81, ...]
4. Зберагачча вектары
Этап 4 «Зберагачча вектары» працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зафіксавайце адны ідэальны прыклад, адну сітуацыю неудачы і прыметкі па поверненню да пачатковага стану пры розшырэнні масштаба. Зберагаччаце настройкі пазырочна ад коду прыемлена. Файлы сераўіснага сэрвара, базы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць аўдыт без неабяжнага чытання всіх дадзеных. Раздзеляйце правілы частковага апрацоўкі дадзеных ад правілав выкарыстоўвання іх. Змена адных не должна вымагаць перапісвання іншых, калі змянююцца паказнікі якасці.
Document
↓
Chunk
↓
Embedding
↓
Vector Store
Vector Store
ID Vector Metadata
--------------------------------
001 [....] product=api
002 [....] product=web
003 [....] product=mobile
document_id
page_number
department
product
version
created_at
tenant_id
access_level
5. Выкарыстоўванне значыцьных дадзеных
Этап 5 «Адаптацыя паведамленняў» працюе належна, калі яго розглядаць як параметр, які можна вымерыць. Зберагучы адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Дакументаваць трэба як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшай доработкі. Разлучыць правілы частковай обработкі дакументаў і правілы ўзяць іх у выкарыстоўванне. Змена адных не должна прымусіваць перапісванне іншых, калі змянююцыся показатэлі якосці.
Question
↓
Query Embedding
↓
Vector Search
Top 5 Results
1. API Authentication Guide
2. OAuth Configuration
3. API Token Documentation
4. Authentication Troubleshooting
5. Security Configuration
6. Ператварэнне адзялёных дакументаў у кантэкст
Этап «6 раз з’явіць дасканыя дакументы» працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адны ідэальны прымер, адзін кейс неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Валіце маленькія, тэставальныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Раздзеліце правілы часткавання дакументаў ад правілаў ўзяць іх. Змена адных не павінна вымагаць перапісву другых, калі зменяюцца паказнікі якосці. Этап «6 раз з’явіць дасканыя дакументы» працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адны ідэальны прымер, адзін кейс неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Запісвайце часы выканення і косты токенаў або запытак разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
User Question
+
Retrieved Context
↓
Prompt
↓
LLM
System:
Answer using the supplied context.
Context:
[Relevant document 1]
[Relevant document 2]
[Relevant document 3]
Question:
How do I configure API authentication?
7. Стварыць адпаведны адказ
Для этапы 7 «Стварыць адказ» неабяжна практычна ваказаць інпуты, адпаведальнага за шаг і крэтыяры завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозрываючы схованы стан. Конфігурацыю трэба захаваць пазначыльна коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Паказваць трэба тыя часткі тэксту, якія фактычна ляглі в основу адказа. Без цых цытатаў аператары не можуць разлічыць галюцынацыю ад прасоўкі ў індэксаванні.
Question
+
Relevant Context
User
↓
Query
↓
Query Embedding
↓
Vector Retrieval
↓
Relevant Chunks
↓
Context Assembly
↓
LLM
↓
Answer
LlamaIndex — гэта не проста «пошук вектараў + LLM»
Для этапы LlamaIndex Is More Than неабяжна прадзеўкаванне вхідных дадзеных, абяранні адпаведнага власніка крока і крэтарыяў завершэння працы перад змінайом коду. Аператары должны магчымае перапрацаваць крок, выкорыстоўваючы вядомы пункт перапаўтку, без неабяжнага адгадвання скрытых станоў. Неабяжна задокументаваць як шлях успеху, так і шлях вяснавання проблем. Перапрыбуткі, людзкія перакрытчыкі і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўвання. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даныя з паўтарной верыфікацыяю схемы, чым працэсуальны тэкст.
Query
↓
Vector Search
↓
Top 5 Documents
↓
LLM
Query
↓
Query Processing
↓
┌─────────┴─────────┐
↓ ↓
Dense Search Keyword Search
↓ ↓
└─────────┬─────────┘
↓
Fusion
↓
Rerank
↓
Context Selection
↓
LLM
Машыны запытанняў: ператварэнне працэсу выкарыстоўвання дадзеных у сістэму адпаведзенняў на запытанні
Для этапы «З’явленне запітаў» у дваржыбніках запытаў неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аперацыёныя працавнікі должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выканаецца, прычына неудачы должна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Прытамульвайце тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх прытамульванняў аперацыёныя працавнікі не зможуць разлічыць галюцынацію ад працягу індэксавання. Для этапы «З’явленне запытаў» у дваржыбніках запытаў неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аперацыёныя працавнікі должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання, а таксама кост токеноў чы запытаў разам з функцыйнальнымі рэзултатамі. Відразуваяя інформацыю пра косты, можна ухіліцца ад неспакою, калі працэс пераходзіць з дэмаверсіі ў рэальную експлуатацыю.
спявэльныя асяроддзя.query_embedding = embed(query)
documents = search(query_embedding)
context = build_context(documents)
answer = llm.generate(
query=query,
context=context,
)
query_engine = index.as_query_engine()
response = query_engine.query(
"How does authentication work?"
)
Сама стадыя адзыскання ёсць там, дзе багато сістэм RAG збываюцца
Калі працуеце над стадыяй адзыскання, спачатку запісайце умовы вікорыстання: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага збыву. Такі спіс контроля дапамагае залічыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы асяроддзя, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаюць пераглядаць без неабяжлівага чытання всей структуры. Перад налаштаваннем запітоў пераканайцеся ў рэкалі на аднам фіксаваным наборэ запытанняў. Частае змена запытоў рэдка калі вярнуе слабую способнасць адзыскання інформацыі.
User Question
↓
Bad Retrieval
↓
Wrong Context
↓
LLM
↓
Bad Answer
Паспрабуйце падняць кантроль адзыскання за дапамогою метаданных
Калі працюеце над стадзіяй «Удосконаленне адгукавання за дапамою метадаў», спачатку запісайце контракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс пераконтролюе чыстасць пазнейшых змян у кодзе. Документавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія перакрыцці і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Змяржыце рэкалі на фіксаванай сэтке запытаў прычым рэгулювання прапанаў. Частая зміна прапанаў рэдка калі-небудзь выправляе слабыя аспекты адгукавання.
Product A
Product B
Product C
product = Product B
version = 3
document_type = documentation
Entire Knowledge Base
↓
Metadata Filter
↓
Relevant Subset
↓
Semantic Search
Гібрыдны пошук можа быць лепшы за самастойны вектарны пошук
Калі працуеце над стадзіяй «Hybrid Search Can Be», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага няўспэху. Такі спіс контроля дапамагае заліцьваты змяны ў кодзе пасля таго. Валіце маленькія, можна працаваць з імі елементы замест большых скрыптав. Калі якісь крок не выйшае, няўспэх павінен вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Перад налаштаваннем запітоў пераканайцеся ў рэверсі на фіксаваным наборэ запітанняў. Частая зміна запітоў рэдка калі-небудзь выправляе слабкую эфектыўнасць пошуку. Калі працуеце над стадзіяй «Hybrid Search Can Be», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага няўспэху. Такі спіс контроля дапамагае заліцьваты змяны ў кодзе пасля таго. Запісвайце час выканання і кост токенав або запіта праза функцыональныя рэзултаты. Відразувая візуабільнасць костаў запобегае неспакойным рахункам, калі праця пераходзіць з дэмавай версіі ў спяльныя сераўысы.
ERR_CONNECTION_RESET_502
Dense Retrieval
+
Sparse Retrieval
↓
Result Fusion
↓
Reranking
Перыякораванне: Затрачвайце большэй калькуляцыйныя рэсурсы толькі на найлепшыя кандыдаты
Этап перыякоравання «Затрачвайце большэй калькуляцыйныя рэсурсы» працюе наўзям лепей, калі яго спрыяваць як вімерную плошчу. Зафіксавайце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Зберагаюце настройкі пазырочна ад коду прыемліцеля. Файлы сераўнавальной асяроддзя, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавляць контроль без неабяжнага чытання всіх дадзеных. Раздзеляйце правілы часткавання дадзеных ад правілаў ўзяць іх. Змена аднаго з яных не должна вымагаць перапісву другога, калі зменяюцца паказнікі якосці.
Top 20 documents
Vector Search
↓
20 candidates
↓
Reranker
↓
Top 5
↓
LLM
Retriever
→ Find potentially relevant documents
Reranker
→ Determine which are actually relevant
LLM
→ Use those documents to answer
Кантэкст — гэта обмежаны рэсурс
Кантэкст у мерыявочных працэсах працюе найкрашча, калі яго спрыяваць як меравальную паверхню. Запісаце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавайце як успішны, так і вярнучыся шляхі. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Раздзеляйце правілы частковай обработкі дадзеных і правілы ўтрымання іх. Змена аднаго з іх не должна вымагаць перапісвання другога, калі зменяюцыся паказнікі якосці.
20 chunks
×
500 tokens
=
10,000 tokens
Retrieve 20
↓
Rerank
↓
Keep 5
↓
Compress
↓
Send 2,500 tokens
LlamaIndex RAG для PDF-файлаў
LammaIndex RAG для PDF-файлаў працюе наякнэй лепшая, калі яго спрыяваць як мерыемую паверхню. Перш чым расшырваць сферу прыменнення, зафіксавайце адны ідэальны прымер перакладу, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану. Валіце маленькія, тэставальныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Раздзеліце правілы фрагментавання інфармацыі ад правіл яе пошуку. Змена ў одных не павінна вымагаць перапісву іншых, калі зменяюцца паказнікі якосці. LammaIndex RAG для PDF-файлаў працюе наякнэй лепшая, калі яго спрыяваць як мерыемую паверхню. Перш чым расшырваць сферу прыменнення, зафіксавайце адны ідэальны прымер перакладу, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану. Запісвайце часы выканання і косты токенавання або запіта разам з функцыональнымі рэзультатамі. Відразувыя даны пра косты запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўысы.
PDF Files
↓
Document Loading
↓
Text Extraction
↓
Chunking
↓
Embeddings
↓
Vector Store
↓
Retriever
↓
LLM
Company Handbook
↓
Employee Documentation
↓
HR Policies
↓
Benefits
↓
Leave Policies
LlamaIndex RAG для AI-застосоў
Для этапы LlamaIndex RAG для AI неабяжна прадзеўкаванне вхідных дадзеных, адпаведнага адпаведальнага за крок і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Конфігурацыю трэба захаваць праз аддзел ад коду прыкладнення. Файлы сяродавішча, хранілішча секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Паказваць трэба тые часткі тэксту, якія фактычна сталі падставай для адпаведнай адпаведзі. Без цых цытатаў працавнікі не зможуць адразніць галюцынацыю ад працягу індэксавання.
User
↓
RAG
↓
Answer
User
↓
Agent
↓
┌─────────┼─────────┐
↓ ↓ ↓
RAG Database API
↓ ↓ ↓
└─────────┼─────────┘
↓
LLM
↓
Answer
Затрымкі RAG маюць значэнне
Для этапы RAG Latency Matters неабяжна ўскладненне: перш чым зменіць код, неабяжна задаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аператары должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Паказваць трэба тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цытатаў аператары не зможаць розразліць галюцынацыю ад прасоў у індэксаванні.
Query
↓
Embedding API
↓
Vector Database
↓
Reranker
↓
LLM
З’явіць менш дакументаў
Для этапы «Адзейчыць меншае колькасць дакументаў» неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за шаг і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перадзеяць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі шаг не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Прытамліваць часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх прытамлень аперацыёныя працавнікі не можуць разлічыць галюцынацію ад прасоўкі ў індэксаванні. Для этапы «Адзейчыць меншае колькасць дакументаў» неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за шаг і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перадзеяць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльнае сэрвіруванне.
Гэта ўсе.
Іспользаванне фільтраў метадаў
Калі працюеце на етапе іспользавання фільтраў метадаў, спачатку запішыце умовы: неабходныя даны, сігнал успеху і тое, што відбываецца у разы частковага невыпання. Такі спіс контролю дапамагае заліцьваты змяны ў кодзе пазнейша. Зберагачыце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць пераглядаць іх без неабходнасці чытання всей структуры. Перад налаштаваннем запітоў пераканайцеся ў рывень вярнага аднаходжэння на фіксаваным наборэ запітаў. Частыя зміны запітоў рэдка калі відновляюць слабкую эфектывнасць аднаходжэння дакументаў.
Паралелізаванне незалежных процэсаў аднаходжэння
Калі працюеце над стадзіяй адынавальнага запошуку, спачатку запісайце умовы: неабяжныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьварыць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вярнення да стану нормы. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Змяроўвайце рэкалі на фіксаваным наборэ запытанняў прычымо да налаштавання запрасаў. Частыя змены запрасаў рэдка калі вядуць да павышэння якасці запошуку.
Dense ──────┐
├──→ Fusion
Sparse ─────┘
Dense
↓
Sparse
↓
Fusion
Скорачыце размер запрасаў
Калі працюеце над стадзіяй зменшэння размеру запроса, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, нявыполнення должна паказваць на адну адпаведальнасць, а не на заплутаны ланцужок задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных — частая прычына зайвых вітрацоў. Калі працюеце над стадзіяй зменшэння размеру запроса, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і вартасць токенаў або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра вартасці з’являецца рана і запобегае неспакойным счыткам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы.
Трансляцыя адпаведзі
Этап адаптавання адказу працюе наяўней, калі яго спрыяваць як меравальную паверхню. Зафіксавайце адны ідэальны прыклад адказу, адну справу з бягам і прыметкі па поверненню да пачатковага стану прычымо розшырэнню масштаба. Зберагайце настройкі пазырочна ад коду прыемліка. Файлы сяродавішча, хранільнікі секрэтных дадзеных і пазначкі функцый канальна знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх дадзеных. Раздзеляйце правілы часткавання дадзеных і правілы ўзяць іх. Змена адных не павінна вымагаць перапісвання іншых, калі змянююцца паказнікі якосці.
RAG — гэта не толькі тачнасць
RAG работае наяўнейш чым тады, калі яго спрыяваць як меравальную паверхню. Зафіксавайце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да поперадньага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшай доўнелівання. Раздзеляйце правілы часткавання інфармацыі ад правілаў яе выкарыстоўвання. Змена аднаго з іх не должна вымагаць перапісву другога, калі зменяюцыся показнікі якосці.
RAG Quality
│
┌────────────┼────────────┐
↓ ↓ ↓
Retrieval Generation System
Quality Quality Performance
│ │ │
Recall Faithfulness Latency
Precision Relevance Cost
Ranking Completeness Reliability
Пашырэныя памылкі пад час стварэння LlamaIndex RAG
Звычныя памылкі пад час стварэння этапных рашэнняў — гэта калі іх спрыяюць як да меры. Запісаўце адна «золатая» транскрыпцыю, адзін прыклад неудачы і прыметку па адвярненню працы, прычаму расшырваеце масштаб. Валіце вялікія, складныя для тэставання скрыпты на карысць маленькіх, тэставаных елементаў. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Раздзеляйце правілы часткавання інфармацыі ад правілаў яе выявлення. Змена ў одных не павінна прымусваць перапісванне іншых, калі змянююцыся паказатэлі якосці.
Памылка 1: Спрыяванне LLM як цэлай сістэмы
Парадокс 1: Адаптаванне этапу працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Спрыяйце этапу як кантракту между вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Задзейце бюджэт на токены за кожны раунд і за кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
Парадокс 2: Іспытанне вельмі большых частак
Парадокс 2: Іспытанне вельмі большых частак этапу працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце часы выканання і косты токенав або запытак паўстаючы разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмы ў спяльныя сераверы.
Парадокс 3: Збір занадта большай колькасці дадзенняў
Памылка 4: Ігнараванне метаданных
Памылка 5: Адказаецца ад ацэнкі
Памылка 6: Прыявленне, што векторны пошук якраз дастыць
Архітэктура LlamaIndex RAG, адпрацоўваная для практычнага выкарыстоўвання
User Query
│
▼
Query Processing
│
▼
Query Router
│
┌──────────────┴──────────────┐
│ │
Direct Answer Retrieval Needed
│
▼
Metadata Filtering
│
┌──────────────────┴──────────────────┐
▼ ▼
Dense Search Sparse Search
│ │
└──────────────────┬──────────────────┘
▼
Fusion
│
▼
Rerank
│
▼
Context Selection
│
▼
LLM
│
▼
Response
Пачніце з самага простаг RAG
Documents
↓
Chunk
↓
Embed
↓
Vector Store
↓
Retrieve
↓
LLM
Add metadata
Add hybrid retrieval
Add reranking
Add context compression
Cache + parallelize + reduce retrieval
Праўя сіла LlamaIndex
Documents
Databases
APIs
Knowledge Bases
Search Systems
Structured Data
Unstructured Data
LLM
AI Application
│
┌────────────────┼────────────────┐
↓ ↓ ↓
LLM Tools Data
│ │
└───────┬────────┘
↓
Retrieval
↓
Context
↓
LLM
Заключныя меркі
Data
↓
Ingestion
↓
Indexing
↓
Retrieval
↓
Context
↓
LLM
↓
Answer