A LangChain új retriever-réteggel nyit az alternatív keresési módszerek felé

A LangChain új Retriever absztrakciót vezetett be, amely egyszerűbbé teszi a külső fejlesztésű és a szemantikus kereséstől eltérő lekérdező rendszerek használatát. A változás visszafelé kompatibilis, de a fejlesztőknek azt javasolják, hogy fokozatosan álljanak át az új Retrieval-láncokra.
- A LangChain bevezette a Retriever absztrakciót.
- Az új láncok külső és alternatív keresési módszereket is támogathatnak.
- A VectorDBQA neve RetrievalQA lett.
- A meglévő láncok visszafelé kompatibilisek maradnak.
- A fejlesztők saját retrievereket is készíthetnek.
A VectorDB-központú megközelítés korlátai
A LangChain 2023. március 23-án közzétett bejegyzése szerint a módosítás hátterében az áll, hogy a ChatGPT megjelenése óta sokan saját adataikra épülő chatbotokat szeretnének készíteni. A nyelvi modellek önmagukban nem ismerik a felhasználó saját dokumentumait, ezért az alkalmazásoknak a kérdés megválaszolása előtt ki kell keresniük a kapcsolódó információkat.
Ez a folyamat a Retrieval Augmented Generation, vagyis a visszakereséssel kiegészített generálás. A rendszer először releváns dokumentumokat keres, majd ezeket az eredeti kérdéssel együtt továbbítja a nyelvi modellnek.
A LangChain eddig főként szemantikus keresésre épített. Ilyenkor a dokumentumokból numerikus vektorok, úgynevezett beágyazások készülnek, ezeket vektoradatbázisban tárolják, a beérkező kérdést pedig szintén vektorrá alakítják. A rendszer a lekérdezéshez legközelebb eső dokumentumokat adja vissza.
Egyetlen alapvető műveletre épül az új Retriever
A vállalat szerint a visszakeresésnek több változata is van. A felhasználók például hasonlóság alapján kereshetnek, használhatják a maximális marginális relevanciát, vagy metaadat-szűrést alkalmazhatnak a szemantikus keresés előtt. Más típusú indexek, köztük gráfok iránt is érdeklődnek a fejlesztők.
Az új Retriever interfész szándékosan kevés feltételt szab. A komponensnek egy get_relevant_documents nevű műveletet kell biztosítania, amely egy szöveges lekérdezést fogad, és releváns dokumentumok listáját adja vissza. A LangChain nem ír elő egységes módszert a retrieverek létrehozására.
A további paramétereket, például a metaadat-szűrést, magán a retrieveren kell beállítani. A LangChain ezt azért tartja célszerűnek, mert a retrievereket gyakran láncokba ágyazva használják, és így nem kell minden további paramétert végigvezetni a teljes rendszeren.
Átnevezett láncok és külső megoldások
Az új Python- és TypeScript-kiadásokban a VectorDB-ket használó láncokat Retriever-alapú láncokra állították át. A VectorDBQA neve RetrievalQA lett, a ChatVectorDBChain pedig ConversationalRetrievalChain néven folytatódik. A LangChain a Conversational előtaggal jelzi a memóriát használó láncokat, míg a Chat előtag a chatmodellt használó láncokra utal.
A változtatás első külső példájaként az OpenAI ChatGPT Retrieval Pluginje is bekerült a rendszerbe. A modul nyílt forráskódú, és arra szolgál, hogy a vállalatok a ChatGPT-hez kapcsolható visszakeresési végpontokat tegyenek elérhetővé. A LangChain szerint belső működése nagyban hasonlít a saját VectorStore-megoldásaihoz, mégis jól szemlélteti az új architektúra rugalmasságát.
A meglévő láncok továbbra is működnek, a VectorDBQA és a hasonló VectorDB-alapú láncokat azonban a jövőben már nem fejlesztik kiemelten. A későbbi fejlesztések fő célpontja a RetrievalQA lesz.
Mit jelent ez a fejlesztőknek?
A korábbi VectorStore-ok továbbra is használhatók. A LangChain erre a VectorStoreRetriever komponenst javasolja, amely egy meglévő vektortárolóból a as_retriever() művelettel hozható létre. A fejlesztők emellett saját visszakeresési módszereket is készíthetnek, a projekthez ugyanis külön langchain/retrievers modult indítottak.
A cég célja, hogy a LangChain láncaiban és ügynökeiben a VectorStore mellett más megoldások is könnyen használhatók legyenek. A bejegyzés szerint ez jobb kérdés-válasz rendszereket tehet lehetővé dokumentumokhoz, illetve a korábbi üzenetek visszakeresésével hosszabb távú memóriát is adhat az AI-rendszereknek.
LangChain: Retrieval

