створэнне простага застосунку RAG у Google Colab з LlamaIndex
Простыя прыклады аплікацыяў RAG у Google Colab з LlamaIndex: запусціце неабходныя бібліятэкі, установіце кантэкст ключ Groq API, створыце індэкс дакументаў і адправляйце запыты да іх за дапамогою апэн-сорсовага LLM.
Крыніцы: Build a Simple RAG Application in Google Colab with LlamaIndex and an Open-Source LLM
У гэтым карыце парадку працоўна перакладзена дорага ад сыр'ёчных матэрыялаў да готавага сістэмы для: стварэння простай аплікацыі 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