Geavanceerde RAG-technieken zijn niet beter. Ze zijn soms beter.

Geavanceerde RAG-technieken zijn geen gratis upgrades. Het zijn hulpmiddelen met afwegingen.

Ik heb vijf retrieval-technieken toegevoegd aan een RAG-pipeline om ze te testen. Het belangrijkste resultaat was de techniek die faalde.

Ik verwachtte dat HyDE de retrieval zou verbeteren. In plaats daarvan werkte het averechts bij bepaalde queries. De recall daalde van 0,80 naar 0,17. De techniek hielp niet alleen niet; het trok actief de verkeerde data in de resultaten.

Elke geavanceerde techniek die ik heb getest, werkt als volgt:

  • Hybrid search (BM25 + dense): Geweldig voor exacte termen. Gebruik het wanneer je query afhankelijk is van specifieke parameters.
  • HyDE: Geweldig voor informele vragen die niet overeenkomen met de woordenschat van de documenten. Het faalt wanneer de query al goed overeenkomt met het corpus.
  • Reranking: Geweldig wanneer de juiste chunk wel in de resultaten staat, maar te laag in de lijst staat.
  • Contextual retrieval: Geweldig voor korte chunks die context missen. Het verhoogt de kosten omdat je voor elke chunk een LLM moet gebruiken.

Ik heb deze pipeline gebouwd met behulp van de Anthropic-documentatie. Ik gebruikte Postgres met pgvector en een HNSW-index. Ik ben dit benaderd als een backend engineer. Ik vroeg niet of een techniek 'state of the art' was. Ik vroeg me af of de complexiteit gerechtvaardigd was.

Elke component die je toevoegt, is iets waarvoor je moet beheren, debuggen en betalen.

Voordat ik complexe tools toevoegde, heb ik een baseline gemeten met behulp van eenvoudige dense retrieval.

De resultaten toonden twee verschillende metrieken:

  • Faithfulness: 0,96
  • Context precision: 0,60

Deze gegevens veranderden mijn hele aanpak. De meeste technieken zijn gericht op retrieval. Mijn retrieval was het zwakke punt. Als de faithfulness laag was geweest, had ik de prompts moeten finetunen. Omdat de retrieval laag was, moest ik de zoekopdracht optimaliseren.

Ik heb ook een les geleerd over evaluatietools. Ik probeerde Ragas te gebruiken, maar dat was te traag. Het probeerde mislukte calls opnieuw uit te voeren en dat duurde uren. In plaats daarvan heb ik mijn eigen async harness gebouwd. Ik draaide dezelfde metrieken in 221 seconden in plaats van 11 uur.

De belangrijkste les is simpel:

Pas technieken niet blindelings toe. Gebruik een query router om de juiste modus te kiezen voor de juiste vraag. Meet eerst je data. Kies vervolgens de tool die jouw specifieke failure mode oplost.

Het model is nieuw. De engineering-discipline is dat niet.

Bron: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o