Галоўная / Артыкулы / Практычныя прыемы: створэнне простага застосунку RAG у Google Colab з LlamaIndex

Практычныя прыемы: створэнне простага застосунку RAG у Google Colab з LlamaIndex

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

1221 слоў

У гэтым карыце парадку працоўна перакладзена дорага ад сыр'ёчных матэрыялаў да готавага системы для: стварэння простай аплікацыі RAG у Google Colab з LlamaIndex і адкрытым ЛВМ. Акцэнт ставіцца на практычныя крокі, чыстае перакананне і код, які можна проста падставіць у репазітарый без неабясненых спадчыных парадакоў. У стадіі агляду неабходна з'явіць вхідныя даны, адпаведальнага за крок і критэрыя завершэння прычымоў перад зменай коду. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю без неабясненняя скрытых станоў. Неабходна аддзеіставіць дакументацыю як пра успішны, так і пра патэнцыйны парадкі. Перапрыбуткі, людзкія перакананні і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.

1. Установіце неабходныя бібліятэкі

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

!pip install -q llama-index llama-index-readers-web html2text llama-index-llms-groq llama-index-embeddings-huggingface

2. Імпортуйце неабяжлівыя пакеты

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

from llama_index.core import VectorStoreIndex, Settings
from llama_index.readers.web
import SimpleWebPageReader
from llama_index.llms.groq import Groq
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from google.colab import userdata

3. Наладзіце кантактную клавічку Groq API

Калі вы працуеце над 3-й стадзіяю «Настроўка Groq», спачатку запісайце умовы вярбунка: неабходныя данні, сигнал пра успех і тое, што выканаецца у разе частковага невыпання. Такі список дапамагае заліцварыць пазнейшыя змены ў кодзе. Запісвайце час выканання і вартасьць токена або запытку праза функцыйнальныя рэзултаты. Відразувая вартасьці запобегае неспакою, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Павторны адправкі ідэнтычных дадзенняў — частая прычына некальканасобных витрацоў. Калі вы працуеце над 3-й стадзіяю «Настроўка Groq», спачатку запісайце умовы вярбунка: неабходныя данні, сигнал пра успех і тое, што выканаецца у разе частковага невыпання. Такі список дапамагае заліцварыць пазнейшыя змены ў кодзе. Аддзекументавайце як шлях успеху, так і шлях вяснавання ситуацыі. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных дадзенняў є часткай продукту, а не пазнейшым дапрацоўкам.

# Groq API Key
os.environ["GROQ_API_KEY"] = userdata.get("GROQ_APIKEY")

4. Настроўка модэлю LLM і модэля embedding

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

# Set up the open-source LLM and embedding model
Settings.llm = Groq( model="openai/gpt-oss-120b", temperature=0.1 )
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5" )

5. Завантажыць веб-стороніцу

Этап 5 «Завантажыць веб-стадію» працуе наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметку па адвярненню змян перш чым расширваць масштабы. Спрыявайце гэты этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, некомплектным выкананнем задач. Задаце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; жорсткія ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.

# Passing a URL which we want to load to our vector store
url = "https://mlds.analyticsindiamag.com/"
# Using SimpleWebPageReader to load the URL content
# html_to_text=True converts HTML into plain text
d1 = SimpleWebPageReader( html_to_text=True ).load_data([url])

6. Стварыць векторны індэкс

Этап «6. Стварыць вектар» працюе найэфектыўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае відображэння костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Задаце бюджет токеноў на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэмаверсіям ператварыцца на неспакойныя рахунки. Этап «6. Стварыць вектар» працюе найэфектыўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Дакументавайце як успішны, так і вярнэчы паты. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных запытаў є частью продукту, а не пасляднім дапрацоўкам.

# Create a searchable index from the loaded document
index = VectorStoreIndex.from_documents(d1)

7. Стварыць двігун запытаў

Для падзеўлі 7 «Стварэнне этапу запытку» неабходна прадзефінаваць вхідныя даны, адпаведальную особу за этап і крэтарыі выходу пры змяне коду. Аператары должны магчымаць перзапуск этапу з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы заместо велікіх скрыптав. Калі этап не выйшаў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес. Калі наступны этап — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даны з перакананнем схэмы, чым працэсавы тэкст.

# Creating query engine
query_engine = index.as_query_engine()

8. Задайце запытанне

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

# Running a query against the loaded URL data
r1 = query_engine.query("What is MLDS?")
print(r1)

Полны працэс RAG

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

Web Page
   ↓
SimpleWebPageReader
   ↓
Extract Text
   ↓
Hugging Face Embeddings
   ↓
VectorStoreIndex
   ↓
User Question
   ↓
Relevant Context
   ↓
Groq LLM
   ↓
Answer

Што далей?

Чэрніця аперацый