Einleitung
Retrieval-Augmented Generation (RAG) ist eine leistungsstarke Technik, um einem Large Language Model (LLM) Daten bereitzustellen und präzise Antworten basierend auf Ihren eigenen Inhalten zu generieren. Es ist kosteneffizient im Betrieb und Sie müssen kein eigenes LLM trainieren. Großartig.
In meinem vorherigen Blogbeitrag habe ich mit einem lokal laufenden Llama 3.2 Modell experimentiert, um Fragen basierend auf meinen Inhalten zu beantworten.
Obwohl es adäquat funktionierte, war ich nicht vollständig zufrieden mit den Ergebnissen. Um die Ausgabe zu verbessern, habe ich die Eingabe für den Kontext und auch den Prompt optimiert. Die Ergebnisse waren überraschend.
Dieser Beitrag ist Teil einer Serie von Beiträgen über LLMs und RAGs. Schauen Sie sich auch die anderen Artikel an:
Die Bedeutung von gutem Kontext und einem guten Prompt
Ich habe zwei Lösungen gefunden, die die Qualität der Antworten meines RAG-erweiterten Llama-Modells massiv verbessert haben.
Lösung 1: Relevanter Kontext, Relevanter Kontext, Relevanter Kontext
Die Ähnlichkeitssuche in pgai hat erfolgreich Dokumente gefunden, die für die Frage relevant waren. Aber sie hat auch oft Dokumente zurückgegeben, die nicht sehr relevant für die Frage waren.
Das ergab Sinn, da nur wenige Artikel in meinem Blog eine Frage wie QA spezifisch adressierten.
Um dies zu lösen, habe ich die Suche auf die Rückgabe von nur einem Dokument beschränkt (über SQLs LIMIT 1), um einen relevanteren Kontext sicherzustellen. LIMIT 1 könnte natürlich zu streng sein. Aber es hat wirklich die Probleme gelöst, die ich für die getesteten Anwendungsfälle hatte. Schön!
Erkenntnis: Stellen Sie sicher, dem LLM relevante Inhalte bereitzustellen.
Lösung 2: Ein besserer Prompt
Anfangs war mein Prompt:
What does good QA look like?
Context: {relevant documents from my blog}
Dies führte zu übermäßig generischen Antworten, wobei das Modell den Inhalt zusammenfasste, anstatt die Frage direkt zu beantworten. Ich habe den Prompt verfeinert zu:
DOCUMENT:
{context}
QUESTION:
{query}
INSTRUCTIONS:
Answer the user's QUESTION using the DOCUMENT text above.
Keep your answer grounded in the facts of the DOCUMENT.
If the DOCUMENT doesn't contain the facts to answer the QUESTION then please say so.
Dies hat die Qualität der Antworten des Llama32-Modells erheblich verbessert. Eine Beispielantwort meines lokal laufenden Llama32-Modells sah so aus:
Based on the document, here's an answer to the question:
Can you tell me how modern QA should look like?
According to the document, a modern QA approach should be the following:
* Go without a separate QA team by default
* Hire engineers that write tests on the proper level and own the quality aspect
* Use metrics, quality KPIs, and post-mortems to oversee the quality of software in the department
* Have support teams when large features go live and exploratory testing
* Automation for few critical paths
In other words, a modern QA approach focuses on ensuring that engineers write
high-quality tests and own the quality aspect, rather than relying solely on a
separate QA team. It also emphasizes the importance of metrics, post-mortems,
and automation to improve software quality.
Ich finde diese Antwort schon ziemlich cool. Sie basiert hauptsächlich auf einem Artikel, den ich vor einiger Zeit über QA geschrieben habe. Mit ein wenig Feinabstimmung könnte das ein Chatbot auf meiner Homepage werden. Der erste Schritt, mich selbst zu automatisieren.
Wichtigste Erkenntnisse
Der kontextuelle Inhalt, den Sie bereitstellen, und die Qualität des Prompts sind entscheidend für das Erhalten präziser Antworten.
- Stellen Sie dem LLM nur Inhalte bereit, die eng mit der Frage zusammenhängen. Manchmal ist weniger mehr, da das Modell Schwierigkeiten haben kann, irrelevante Informationen zu ignorieren.
- Erstellen Sie einen guten Prompt und weisen Sie das Modell auch an, keine halluzinierten oder generischen Informationen zurückzugeben.
Mehr
- Den Prompt, den ich verwendet habe, wurde von Steve hier empfohlen: Prompt Engineering for RAG.
- Sie mögen Meta vielleicht nicht. Aber die Arbeit, die sie für die Open-Source-Community und uns als Menschen im Bereich KI leisten, ist erstaunlich: https://ai.meta.com/blog/meta-llama-quantized-lightweight-models/ Zeit, Meta-Aktien zu kaufen, nehme ich an.
