Галоўная / Артыкулы / Практычныя прытамулкі: LlamaIndex RAG: Практычныя вядомасці пра стварэнне адналейтэльнейшага ШІ

Практычныя прытамулкі: LlamaIndex RAG: Практычныя вядомасці пра стварэнне адналейтэльнейшага ШІ

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

3766 слоў

Існавайце гэты документ як перапрацоўаную версію ідэй з кніги “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

Чэрніца кантролю