Интеграција РАГ-а (генерација са проширеним приступом) са модерним веб оквирима: Практични водич
Увод
Последњих година, област обраде природног језика (НЛП) је била сведок значајног пораста у развоју великих језичких модела (ЛЛМ) и њихове примене у различитим доменима. Међутим, једно од главних ограничења ЛЛМ-а је њихова неспособност да пронађу и уграде екстерно знање у своје одговоре. Овде на сцену ступају технике Ретриевал-Аугментед Генератион (РАГ). У овом чланку ћемо истражити примену РАГ техника користећи ФастАПИ и Дјанго за побољшање ЛЛМ могућности у веб апликацијама, укључујући оркестрацију са ЛангЦхаин-ом за беспрекорно проналажење и обраду података.
Шта је РАГ?
РАГ је техника која комбинује предности модела преузимања и генерисања да би се произвели прецизнији и информативнији одговори. Основна идеја иза РАГ-а је да се прво дохвате релевантне информације из базе знања или базе података, а затим се те информације користе за генерисање одговора. Овај приступ омогућава ЛЛМ-има да искористе екстерно знање и пруже тачније и информативније одговоре.
Зашто користити РАГ са ФастАПИ и Дјанго?
ФастАПИ и Дјанго су два од најпопуларнијих веб оквира који се користе за прављење веб апликација. Они обезбеђују робусну и скалабилну инфраструктуру за изградњу веб апликација и могу се лако интегрисати са РАГ техникама како би се побољшале ЛЛМ могућности. ФастАПИ је модеран веб оквир који обезбеђује брз и ефикасан начин за прављење веб апликација, док је Дјанго веб оквир високог нивоа који обезбеђује архитектуру, шаблоне и АПИ-је за изградњу робусних веб апликација.
Имплементација РАГ-а са ФастАПИ-јем
ФастАПИ пружа једноставан и ефикасан начин за имплементацију РАГ техника. Ево примера блока кода који показује како да користите ФастАПИ за имплементацију РАГ-а:
из фастапи импорт ФастАПИ
из лангцхаин импорт ЛЛМЦхаин
из лангцхаин.цхаинс.опенаи импорт ОпенАИАпи
апликација = ФастАПИ()
@апп.гет("/крпа")
асинц деф раг(упит: стр):
ллм_цхаин = ЛЛМЦхаин(
ллм=ОпенАИАпи(),
ретриевал=ЛангЦхаинРетриевал(
индек=ЛангЦхаинИндек(
наме="ми_индек",
документи=["доц1", "доц2", "доц3"]
)
)
)
# Генеришите одговор користећи ЛЛМ ланац
одговор = ллм_цхаин.рун(куери)
ретурн {"одговор": одговор}
У овом примеру дефинишемо ЛЛМ ланац користећи класу ЛЛМЦхаин из ЛангЦхаин-а. Затим дефинишемо компоненту за преузимање користећи класу ЛангЦхаинРетриевал, која се користи за преузимање релевантних информација из базе знања или базе података. Коначно, користимо метод рун да генеришемо одговор користећи ЛЛМ ланац.
Имплементација РАГ-а са Дјангом
Дјанго обезбеђује веб оквир високог нивоа који се лако може интегрисати са РАГ техникама. Ево примера блока кода који показује како користити Дјанго за имплементацију РАГ-а:
из дјанго.хттп импорт ЈсонРеспонсе
из лангцхаин импорт ЛЛМЦхаин
из лангцхаин.цхаинс.опенаи импорт ОпенАИАпи
деф крпа (захтев):
# Дефинишите ЛЛМ ланац
ллм_цхаин = ЛЛМЦхаин(
ллм=ОпенАИАпи(),
ретриевал=ЛангЦхаинРетриевал(
индек=ЛангЦхаинИндек(
наме="ми_индек",
документи=["доц1", "доц2", "доц3"]
)
)
)
# Генеришите одговор користећи ЛЛМ ланац
одговор = ллм_цхаин.рун(рекуест.ГЕТ.гет("куери"))
ретурн ЈсонРеспонсе({"одговор": одговор})
У овом примеру дефинишемо функцију приказа крпа која узима упит као улаз и генерише одговор користећи ЛЛМ ланац.
Оркестрирање РАГ-а са ЛангЦхаин-ом
ЛангЦхаин пружа једноставан и ефикасан начин за оркестрирање РАГ техника. Ево примера блока кода који показује како да користите ЛангЦхаин за оркестрирање РАГ-а:
из лангцхаин импорт ЛЛМЦхаин
из лангцхаин.цхаинс.опенаи импорт ОпенАИАпи
# Дефинишите ЛЛМ ланац
ллм_цхаин = ЛЛМЦхаин(
ллм=ОпенАИАпи(),
ретриевал=ЛангЦхаинРетриевал(
индек=ЛангЦхаинИндек(
наме="ми_индек",
документи=["доц1", "доц2", "доц3"]
)
)
)
# Генеришите одговор користећи ЛЛМ ланац
одговор = ллм_цхаин.рун("Шта је РАГ?")
штампа (одговор)
У овом примеру дефинишемо ЛЛМ ланац користећи класу ЛЛМЦхаин из ЛангЦхаин-а. Затим користимо метод рун да генеришемо одговор користећи ЛЛМ ланац.
Топ 5-10 најчешће коришћених команди/исјечака
Ево 5-10 најчешће коришћених команди/исјечака за имплементацију РАГ-а са ФастАПИ-ом и Дјанго-ом:
из лангцхаин импорт ЛЛМЦхаин: Увезите класуЛЛМЦхаиниз ЛангЦхаин-а.ллм_цхаин = ЛЛМЦхаин(ллм=ОпенАИАпи(), ретриевал=ЛангЦхаинРетриевал(индек=ЛангЦхаинИндек(наме="ми_индек", доцументс=["доц1", "доц2", "доц3"]))): Дефинишите ЛЛМ ланац користећи класуЛЛМЦхаин.респонсе = ллм_цхаин.рун(куери): Генеришите одговор користећи ЛЛМ ланац.фром фастапи импорт ФастАПИ: Увезите класуФастАПИиз ФастАПИ-ја.апп = ФастАПИ(): Дефинишите ФастАПИ апликацију.@апп.гет("/раг"): Дефинишите руту за РАГ крајњу тачку.ллм_цхаин = ЛЛМЦхаин(ллм=ОпенАИАпи(), ретриевал=ЛангЦхаинРетриевал(индек=ЛангЦхаинИндек(наме="ми_индек", доцументс=["доц1", "доц2", "доц3"]))): Дефинишите ЛЛМ ланац користећи класуЛЛМЦхаин.респонсе = ллм_цхаин.рун(куери): Генеришите одговор користећи ЛЛМ ланац.из дјанго.хттп импорт ЈсонРеспонсе: Увезите класуЈсонРеспонсеиз Дјанга.ретурн ЈсонРеспонсе({"респонсе": респонсе}): Врати ЈСОН одговор са генерисаним одговором.
Визуелизација
Ево визуелног приказа РАГ цевовода користећи Цхарт.јс:
{
"типе": "хоризонталБар",
"подаци": {
"лабелс": ["Преузимање", "Генерација", "Накнадна обрада"],
"сетови података": [
{
"лабел": "РАГ Пипелине",
"подаци": [10, 20, 30],
"бацкгроундЦолор": [
"ргба(255, 99, 132, 0.2)",
"ргба(54, 162, 235, 0.2)",
"ргба(255, 206, 86, 0,2)"
],
"бордерЦолор": [
"ргба(255, 99, 132, 1)",
"ргба (54, 162, 235, 1)",
"ргба(255, 206, 86, 1)"
],
"бордерВидтх": 1
}
]
},
"опције": {
"наслов": {
"приказ": истина,
"тект": "РАГ Пипелине"
},
"вага": {
"иАкес": [
{
"крпељи": {
"бегинАтЗеро": истина
}
}
]
}
}
}
Ова визуелизација приказује РАГ цевовод са три фазе: проналажење, генерисање и накнадна обрада.
Закључак
У овом чланку смо истражили примену РАГ техника користећи ФастАПИ и Дјанго да бисмо побољшали ЛЛМ могућности у веб апликацијама, укључујући оркестрацију са ЛангЦхаин-ом за беспрекорно проналажење и обраду података. Такође смо обезбедили практичан водич за имплементацију РАГ-а са ФастАПИ и Дјанго, укључујући примере кода и визуелизацију РАГ цевовода. Надамо се да је овај чланак пружио користан ресурс за програмере који желе да имплементирају РАГ технике у своје веб апликације.