Bouw een lokale RAG-chatbot in 30 minuten

Ik heb een API-specificatie van 40 pagina's geüpload naar mijn lokale chatbot. Ik vroeg naar de rate limit voor een specifiek endpoint.

De bot antwoordde binnen drie seconden. Hij citeerde de exacte sectie van het document.

Het beste ervan? Het kostte $0. Alles draait op mijn laptop met behulp van .NET 8, Ollama en React. Er verlaat geen enkele data mijn machine.

De meeste tutorials raden je aan om OpenAI te gebruiken. Dat werkt voor demo's, maar het schiet tekort bij echt werk omdat:

  • Privacy: Je wilt geen gevoelige bedrijfsgegevens in een cloud-trainingspipeline hebben.
  • Kosten: Het versturen van grote bestanden naar een LLM loopt snel op.
  • Hallucinaties: Modellen vergeten vaak het midden van lange documenten.

De oplossing is RAG (Retrieval-Augmented Generation). In plaats van een heel PDF-bestand te versturen, stuur je alleen de relevante chunks.

Zo heb ik deze pipeline gebouwd:

• Tekstextractie: Ik heb PdfPig gebruikt om tekst uit PDF's te extraheren. • Chunking: Ik heb de tekst opgedeeld in stukken van 500 woorden met een overlap van 50 woorden. Deze overlap zorgt ervoor dat het model geen antwoorden mist die over twee chunks heen lopen. • Embeddings: Ik heb het nomic-embed-text-model via Ollama gebruikt om tekst om te zetten in vectoren. • Vector Store: Ik heb een eenvoudige in-memory lijst gebouwd met behulp van cosine similarity om de beste matches te vinden. • Generatie: Ik heb llama3.2 gebruikt om vragen te beantwoorden op basis van alleen de gevonden chunks.

Drie lessen die ik heb geleerd tijdens het bouwen:

  1. Gebruik een lange timeout: Lokale modellen hebben tijd nodig om in het geheugen te worden geladen. Ik heb mijn HttpClient-timeout ingesteld op 5 minuten om fouten tijdens cold starts te voorkomen.
  2. Prompt engineering is essentieel: Ik vertel het model dat het ALLEEN antwoorden mag geven op basis van de verstrekte context. Dit vermindert hallucinaties met 80%.
  3. Chunking is belangrijk: Ik deel op basis van woorden in plaats van tekens. Hierdoor blijft de grootte voorspelbaar en binnen de limieten van het model.

Je kunt deze volledige stack lokaal draaien. Het is een professionele tool met een budget van nul dollar.

Bekijk het volledige build-log en de code hier:

Source: https://dev.to/avinash_zala_1c6f5e7c4af9/build-a-local-rag-chatbot-in-30-minutes-with-net-8-ollama-and-react-55go

Optional learning community: https://t.me/GyaanSetuAi