30 ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ Local RAG Chatbot ਬਣਾਓ

ਮੈਂ ਆਪਣੇ local chatbot ਵਿੱਚ 40 ਪੰਨਿਆਂ ਦੀ ਇੱਕ API spec ਅਪਲੋਡ ਕੀਤੀ। ਮੈਂ ਇੱਕ ਖਾਸ endpoint ਲਈ rate limit ਬਾਰੇ ਪੁੱਛਿਆ।

ਬੋਟ ਨੇ ਤਿੰਨ ਸਕਿੰਟਾਂ ਵਿੱਚ ਜਵਾਬ ਦਿੱਤਾ। ਇਸਨੇ ਦਸਤਾਵੇਜ਼ ਦੇ ਸਹੀ ਸੈਕਸ਼ਨ ਦਾ ਹਵਾਲਾ ਦਿੱਤਾ।

ਸਭ ਤੋਂ ਵਧੀਆ ਗੱਲ? ਇਸਦੀ ਲਾਗਤ $0 ਹੈ। ਸਭ ਕੁਝ ਮੇਰੇ ਲੈਪਟਾਪ 'ਤੇ .NET 8, Ollama, ਅਤੇ React ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਚੱਲਦਾ ਹੈ। ਕੋਈ ਵੀ ਡਾਟਾ ਮੇਰੀ ਮਸ਼ੀਨ ਤੋਂ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ।

ਜ਼ਿਆਦਾਤਰ ਟਿਊਟੋਰਿਅਲ ਤੁਹਾਨੂੰ OpenAI ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਕਹਿੰਦੇ ਹਨ। ਇਹ ਡੈਮੋ ਲਈ ਤਾਂ ਠੀਕ ਹੈ, ਪਰ ਅਸਲ ਕੰਮ ਲਈ ਇਹ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ:

  • Privacy: ਤੁਸੀਂ ਕੰਪਨੀ ਦਾ ਸੰਵੇਦਨਸ਼ੀਲ ਡਾਟਾ cloud training pipeline ਵਿੱਚ ਨਹੀਂ ਰੱਖਣਾ ਚਾਹੁੰਦੇ।
  • Cost: ਇੱਕ LLM ਨੂੰ ਵੱਡੀਆਂ ਫਾਈਲਾਂ ਭੇਜਣ ਨਾਲ ਖਰਚਾ ਤੇਜ਼ੀ ਨਾਲ ਵਧਦਾ ਹੈ।
  • Hallucinations: ਮਾਡਲ ਅਕਸਰ ਲੰਬੇ ਦਸਤਾਵੇਜ਼ਾਂ ਦੇ ਵਿਚਕਾਰਲੇ ਹਿੱਸੇ ਨੂੰ ਭੁੱਲ ਜਾਂਦੇ ਹਨ।

ਇਸਦਾ ਹੱਲ RAG (Retrieval-Augmented Generation) ਹੈ। ਪੂਰੀ PDF ਭੇਜਣ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਸਿਰਫ਼ ਸੰਬੰਧਿਤ chunks ਭੇਜਦੇ ਹੋ।

ਮੈਂ ਇਸ pipeline ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਇਆ:

• Text Extraction: ਮੈਂ PDFs ਤੋਂ ਟੈਕਸਟ ਕੱਢਣ ਲਈ PdfPig ਦੀ ਵਰਤੋਂ ਕੀਤੀ। • Chunking: ਮੈਂ ਟੈਕਸਟ ਨੂੰ 50-word overlap ਦੇ ਨਾਲ 500-word ਦੇ ਟੁਕੜਿਆਂ ਵਿੱਚ ਵੰਡ ਦਿੱਤਾ। ਇਹ overlap ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਮਾਡਲ ਉਹ ਜਵਾਬ ਨਾ miss ਕਰੇ ਜੋ ਦੋ chunks ਦੇ ਵਿਚਕਾਰ ਫੈਲੇ ਹੋਏ ਹਨ। • Embeddings: ਮੈਂ ਟੈਕਸਟ ਨੂੰ vectors ਵਿੱਚ ਬਦਲਣ ਲਈ Ollama ਰਾਹੀਂ nomic-embed-text ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। • Vector Store: ਮੈਂ ਸਭ ਤੋਂ ਵਧੀਆ ਮੈਚ ਲੱਭਣ ਲਈ cosine similarity ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਸਧਾਰਨ in-memory list ਬਣਾਈ। • Generation: ਮੈਂ ਸਿਰਫ਼ ਮਿਲੇ ਹੋਏ chunks ਦੇ ਅਧਾਰ 'ਤੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਲਈ llama3.2 ਦੀ ਵਰਤੋਂ ਕੀਤੀ।

ਬਣਾਉਣ ਦੌਰਾਨ ਮੈਂ ਸਿੱਖੇ ਤਿੰਨ ਸਬਕ:

  1. ਇੱਕ ਲੰਬਾ timeout ਵਰਤੋ: Local ਮਾਡਲਾਂ ਨੂੰ ਮੈਮੋਰੀ ਵਿੱਚ ਲੋਡ ਹੋਣ ਲਈ ਸਮਾਂ ਲੱਗਦਾ ਹੈ। ਮੈਂ cold starts ਦੌਰਾਨ ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਆਪਣੇ HttpClient timeout ਨੂੰ 5 ਮਿੰਟ 'ਤੇ ਸੈੱਟ ਕੀਤਾ।
  2. Prompt engineering ਮਹੱਤਵਪੂਰਨ ਹੈ: ਮੈਂ ਮਾਡਲ ਨੂੰ ਸਿਰਫ਼ ਦਿੱਤੇ ਗਏ context ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਵਾਬ ਦੇਣ ਲਈ ਕਹਿੰਦਾ ਹਾਂ। ਇਹ hallucinations ਨੂੰ 80% ਤੱਕ ਘਟਾ ਦਿੰਦਾ ਹੈ।
  3. Chunking ਮਹੱਤਵਪੂਰਨ ਹੈ: ਮੈਂ characters ਦੀ ਬਜਾਏ ਸ਼ਬਦਾਂ (words) ਦੁਆਰਾ chunk ਕਰਦਾ ਹਾਂ। ਇਹ ਆਕਾਰ ਨੂੰ ਅਨੁਮਾਨਿਤ ਅਤੇ ਮਾਡਲ ਦੀਆਂ ਸੀਮਾਵਾਂ ਦੇ ਅੰਦਰ ਰੱਖਦਾ ਹੈ।

ਤੁਸੀਂ ਇਸ ਪੂਰੇ stack ਨੂੰ local ਰੂਪ ਵਿੱਚ ਚਲਾ ਸਕਦੇ ਹੋ। ਇਹ ਜ਼ੀਰੋ-ਡਾਲਰ ਬਜਟ 'ਤੇ ਇੱਕ professional-grade tool ਹੈ।

ਪੂਰਾ build log ਅਤੇ code ਇੱਥੇ ਦੇਖੋ:

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