Zum Inhalt springen

Werk:AI mit Arnie/Q&A Chain, Memory & RAG

aus AufEinWort, der freien Forschung

Apps, ChatBots & KI-Agenten

📽️ 🎓
◀ Kurs AI mit Arnie (KI Revolution) LLMs meistern
14 Q&A Chain, Memory & RAG Herausforderungen und Probleme (5:48)
Q&A Chain, Memory & RAG
▲ Flowise Basics: Unsere erste Langchain App
▶ Q&A Chain, Memory & RAG
▼ Function Calling, Memory & RAG (Assistant API)

Im letzten Video hast du ja gesehen, wie die Basics hier funktionieren. Wir haben einen ganz, ganz dummen Chatbot gebaut. Der Chatbot wird immer nur relativ ähnlich antworten, und er merkt sich auch nicht, worüber man spricht. Er kann keine Konversation mit dir führen, er merkt sich nicht, wer du bist, und er merkt sich nicht, was du sagst. Das können wir ändern – mit vielen, vielen verschiedenen Frameworks.

In diesem Video zeige ich dir, was, und danach zeige ich dir auch irgendwas Neues, womit du vielleicht aktuell noch nicht rechnest. Das heißt, wir gehen hier auf dieses „Plus“, und wir können hier natürlich viele Dinge hinzufügen. Du siehst hier erstmal die ganzen Chains natürlich, und bei diesen Chains haben wir solche Dinge wie „Conversational Retrieval Q&A Chain“. Das heißt, wir können hier mit einem Chatbot sprechen, und dieser Chatbot kann sich sogar die Dinge merken, worüber wir sprechen. Dafür haben wir natürlich diese sogenannte „Memory“. Wir haben einen „Vector Store Retriever“ für unsere RAG-Technologie, und wir haben natürlich unser Chatmodell.

Das heißt, was müssen wir hier alles anhängen? Wir klicken natürlich auf „Plus“. Danach würden wir auf die Chatmodelle gehen. Wir würden hier z. B. „API ChatGPT verwenden, von OpenAI natürlich. Dieses ChatGPT-Modell könnten wir dann mit unserem Chatmodell verbinden. Das heißt, wir haben jetzt ein halbes schlaues Chatmodell, z. B. GPT-3 oder GPT-3.5. Das ist jetzt verbunden, natürlich mit unserem Chatmodell.

Danach brauchen wir eine Vector Database, wenn sie die Dinge befragen soll. Tatsächlich, wenn wir hier die RAG-Technologie verwenden wollen. Und zusätzlich können wir hier auch noch diese „Memory“ anstöpseln. Diese „Memory“ brauchen wir, damit sich dieser Chatbot die Dinge merken kann. Das heißt, würden wir mit diesem Chatbot hier sprechen, dann würde man hier natürlich eine „Vector Database“ dazu packen. Das könnte man z. B. auf „Pinecone“ holen. Und wenn man auch noch will, dass sich dieses Tool die Dinge merkt, worüber man spricht, dann würde man auch noch „Memory“ dazu holen.

Und das Video wird kurz, weil ich dir jetzt schon sage: Wir haben mittlerweile die Assistant API. Und dank der Assistant API können wir uns all die Dinge sparen. Wir brauchen keine externe Vector Database anschließen. Wir müssen keine Memory hinzufügen, wenn wir einen Q&A-Chatbot haben wollen. RAG und Memory, das heißt, Unterhalten mit unseren Dokumenten, war noch nie so einfach, weil wir jetzt einfach die Assistant API haben. Die Assistant API macht so viele Dinge so einfach. Und deshalb will ich dir im nächsten Video zeigen, wie wir all die Probleme lösen, bevor wir sie erst richtig angehen müssen. Denn wir können uns all die lästigen Arbeitsschritte sparen.

Ich will hier noch mal zurückgehen. Wenn ich noch mal zurückgehe hier, wir müssen das nicht speichern. Auf Marketplace gehen, dann finden wir natürlich auch hier Conversational Retrieval Q&A Chains. Und hier siehst du, wie die Dinge eigentlich früher aufgebaut gewesen sind: Wir haben hier das Ding, das antwortet. Danach das OpenAI-Chatmodell. Danach Pinecone. Pinecone ist unsere Vector Database, die also die Dinge speichert, die wir hochladen können.

Natürlich, um die Dinge auf Pinecone zu speichern, brauchen wir die OpenAI-Embeddings. Das heißt, wir müssen die Dinge natürlich einbetten, damit sie anständig gespeichert werden können. Um die Dinge natürlich hochzuladen, brauchen wir das da. Wir brauchen also etwas, um Textfiles hochzuladen oder PDFs oder etwas in diese Richtung. Und wir brauchen natürlich noch unseren Textsplitter, um die Chunks zu machen – ganz genauso, wie wir eben in VectorShift gemacht haben.

Zusätzlich würde man hier sogar noch Plus klicken, man würde auf Memory gehen, und man würde z. B. diese Buffer Memory einfügen. Und diese würde man natürlich verbinden hier mit Memory. Jetzt haben wir hier einen Chatbot, der all die Dinge machen kann. Dieser Chatbot hätte danach tatsächlich das Potenzial, dass man Anfragen stellt. Dieser Textsplitter teilt die Anfragen in kleine Chunks, so wie du schon gelernt hast, damit sie besser durchsucht werden können.

Das heißt, die Dinge, die wir hier hochladen bei „Upload File“, werden durchsucht durch diesen Textsplitter. Die werden danach durch das Embeddings-Modelle gejagt. Die Embeddings-Modelle speichern das auf Pinecone. Danach geht unsere Frage natürlich rein in das OpenAI-Modell hier. Das OpenAI-Modell sucht sich die Dinge von Pinecone raus, die es eben braucht, und es gibt uns die Antworten natürlich und zurück, sobald wir mit dem Modell sprechen. Und durch diese Buffer Memory kann sich das Modell länger merken, worüber wir sprechen.

Also ein ziemliches Hexenwerk. Du weißt natürlich, wie das funktioniert. Wenn du das so verwenden willst, dann setz das ganz einfach genauso ein, wie wir es in VectorShift gelernt haben. Bei Pinecone musst du natürlich einen Account machen für deine Vector Database. Aber ich denke, ich muss dir das nicht unbedingt zeigen, weil uns die Assistant API mittlerweile so stark helfen kann und da all die Dinge fast nutzlos macht. Und da haben wir auch noch Function Calling gleichzeitig dabei.

Deshalb will ich dir im nächsten Video die beste Möglichkeit zeigen, wie wir einen Q&A-Chatbot bauen können, der RAG integriert hat und Function Calling – und das so einfach wie möglich.

Wir sehen uns natürlich im nächsten Video.