Gebruikershulpmiddelen

Site-hulpmiddelen


projecten

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisieVorige revisie
Volgende revisie
Vorige revisie
projecten [2023/10/25 18:56] – [A3Dbot] a3dijkeprojecten [2024/05/12 14:53] (huidige) – [Database vullen] a3dijke
Regel 2: Regel 2:
 <= [[start|Terug naar start]]\\ <= [[start|Terug naar start]]\\
  
-===== A3Dbot ===== 
  
-**Wat:**\\ +====== RAG Chatapplicatie ====== 
--> Een Python applicatie bouwen die ik online kan gebruiken op een website.\\ +🔸 Een app gebouwd die data in een Pincone vector database plaatst en vervolgens een chatbot gebouwd die de content uit de database haalt en doorgeeft een een llm (RAG).
--> De app moet een //(met eigen getrainde data)// AI-chat-bot zijn. Tegelijkertijd wil ik mijn kennis van Python een boost geven.+
  
 +===== Database vullen =====
 +**Gegevens opsplitsen:** Online zijn vele voorbeelden te vinden waarbij documenten allemaal dezelfde aantal leestekens hebben doordat een splitten wordt gebruikt die grote documenten splits op het aantal leestekens. Ik heb voor een andere //(intensievere)// methode gekozen door documenten te schrijven die niet allemaal het zelfde aantal tekens hebben maar waarvan de content per document een afgerond verhaald is //(van tussen de 1000 en 1500 leestekens)//! Alle documenten die bij mij uiteindelijk in de database zijn terecht gekomen staan in het voorbeeld //(hieronder)// in de map "./a3d/files/txt/". De splitter is een dubbele soft enter "\n\n" //(zie de load_embeddings_from_dir methode)//. Het resultaat is dat er geen data/gegevens verloren gaat zoals dat bij andere splits methoden wel gebeurd. Ieder document is een afgerond verhaal.
 +
 +🔸 //Deze methode is wel een stuk arbeidsintensiever en kan alleen toegepast worden als degene die de documenten samenstelt van alle ins en outs m.b.t. tot de gewenste resultaten op de hoogte is.//\\
 +✨ Groot voordeel is dan wel dat de resultaten een stuk beter zullen zijn ✨
 +
 +<code>
 +import os
 +import pinecone 
 +from langchain.vectorstores import Pinecone
 +from langchain.embeddings.openai import OpenAIEmbeddings
 +
 +class Document:
 +    def __init__(self, text, metadata=None):
 +        self.page_content = text
 +        self.metadata = metadata if metadata is not None else {}
 +
 +class A3DEmbedding:
 +    def __init__(self, a3dcon, a3dmod):
 +        self.a3dcon = a3dcon
 +        self.a3dmod = a3dmod       
 +
 +    # START 
 +    def start_embeddings(self):
 +        doc_db = self.embedding_db()
 +        print(doc_db)
 +        self.a3dcon.embeddings_done("> Embeddings loaded in Pinecone index")
 +
 +    def embedding_db(self):
 +        embeddings = OpenAIEmbeddings()
 +        pinecone.init(
 +            api_key = self.a3dmod.pinecone_api_key,
 +            environment = self.a3dmod.pinecone_environment
 +        )
 +        docs_split = self.load_embeddings_from_dir()
 +        doc_db = Pinecone.from_documents(
 +            docs_split, 
 +            embeddings, 
 +            index_name=self.a3dmod.pinecone_index_name
 +        )
 +        return doc_db
 +    
 +    def load_embeddings_from_dir(self):
 +        directory = './a3d/files/txt/'
 +        documents = [] 
 +        for filename in os.listdir(directory):
 +            if filename.endswith('.txt'):
 +                file_path = os.path.join(directory, filename)
 +                with open(file_path, 'r', encoding='utf-8') as file:
 +                    content = file.read()
 +                    parts = content.split('\n\n')
 +                    for part in parts:
 +                        documents.append(Document(part))
 +        print(f"Aantal gesplitste documenten: {len(documents)}")
 +        return documents
 +</code>
  
 ---- ----
 +
 +====== Onderzoek ======
 +===== A3Dbot =====
 +
 +
  
 ==== Stappen: ==== ==== Stappen: ====
  
--> [[a3d_bot_testomgeving|Testomgeving opzetten en diverse tools en oplossingen uit te proberen]]\\ + 
--> [[a3d_bot_bouwen|App bouwen]]\\+-> [[embeddings_app|Embedding App]]\\ 
 +-> [[a3d_bot_bouwen|Web Chat App bouwen]]\\ 
 +-> [[a3d_bot_bouwen_2|Web Chat App bouwen 2]] 
 + 
 +-> [[a3d_bot_testomgeving|Testomgeving opzetten en diverse tools en oplossingen uitproberen]]
  
 ---- ----
  
projecten.1698252968.txt.gz · Laatst gewijzigd: 2023/10/25 18:56 door a3dijke