Gebruikershulpmiddelen

Site-hulpmiddelen


pinecon

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
pinecon [2024/02/10 16:20] – [Data Opdelen in Chunks] a3dijkepinecon [2024/10/15 17:28] (huidige) – [Opdelen van .txt bestanden] a3dijke
Regel 1: Regel 1:
 ====== Pinecone Vector database ====== ====== Pinecone Vector database ======
-<= [[start|Terug naar start]]\\ +🗂️ [[start|Terug naar start]]\\ 
-<- -- [[projecten|Terug naar A3Dbot Start]]\\+
  
 [[https://app.pinecone.io/|Pinecone]] is een vector database die speciaal is ontworpen voor machine learning toepassingen. In de wereld van machine learning worden vector databases gebruikt om grote hoeveelheden high-dimensional data efficiënt op te slaan en te doorzoeken. Met Pinecone kunnen ontwikkelaars en data scientists gemakkelijker werken aan de bouw van schaalbare en betrouwbare machine learning systemen. Het biedt een infrastructuur voor het opslaan en opvragen van vector representaties van data, wat cruciaal is voor vele machine learning tasks. Door de inzet van Pinecone kunnen bedrijven sneller en met minder moeite waardevolle inzichten verkrijgen uit hun data, en zo betere producten en diensten ontwikkelen. [[https://app.pinecone.io/|Pinecone]] is een vector database die speciaal is ontworpen voor machine learning toepassingen. In de wereld van machine learning worden vector databases gebruikt om grote hoeveelheden high-dimensional data efficiënt op te slaan en te doorzoeken. Met Pinecone kunnen ontwikkelaars en data scientists gemakkelijker werken aan de bouw van schaalbare en betrouwbare machine learning systemen. Het biedt een infrastructuur voor het opslaan en opvragen van vector representaties van data, wat cruciaal is voor vele machine learning tasks. Door de inzet van Pinecone kunnen bedrijven sneller en met minder moeite waardevolle inzichten verkrijgen uit hun data, en zo betere producten en diensten ontwikkelen.
 +
 +**[[https://docs.pinecone.io/docs/new-api|Pinecone nieuwe API]]**
  
 ---- ----
Regel 19: Regel 21:
 -> dimentions = 1536\\ -> dimentions = 1536\\
 -> metric = "cosine"\\ -> metric = "cosine"\\
--> Model: OpenAI/text-embedding-ada-002 //(instellen bij "set=up by Model)//"+-> Model: OpenAI/text-embedding-3-small //(instellen bij "set=up by Model)//"\\ 
 +-> Tabblad PODS: P2 //(1x)//\\ 
 +-> Cloud provider: Google\\ 
 +-> Region: Netherlands eu-west4-gcp
  
 **[[https://python.langchain.com/docs/integrations/vectorstores/pinecone|Pinecone en LangChain Docs]]** **[[https://python.langchain.com/docs/integrations/vectorstores/pinecone|Pinecone en LangChain Docs]]**
Regel 33: Regel 38:
  
 ==== Opdelen van .txt bestanden ==== ==== Opdelen van .txt bestanden ====
-Ik heb tekstbestanden gegenereerd met plokken tekst gescheiden door een dubbele line break\\ +[[https://github.com/AdrieVanDijke/pineconevuller|Code op GitHub]]\\ 
-Deze tekstblokken moeten als documenten naar een Pincone database +Ik heb tekstbestanden gegenereerd met blokken tekst gescheiden door een dubbele line break\\ 
 +Deze tekst blokken moeten als documenten naar een Pinecone database\\ 
 +bestanden worden opgesplitst in //(qua aantal leestekens ongelijke)// documenten en vervolgens weggeschreven naar de PineCone DataBase\\ 
 +Ik gebruik de volgende code:
  
 +<code>
 +import os
 +import streamlit as st
 +from pinecone import Pinecone, ServerlessSpec
 +from langchain_community.vectorstores import Pinecone as LangChainPinecone
 +from langchain_openai.embeddings import OpenAIEmbeddings
 +import uuid 
  
 +
 +# Initialize the app ============================
 +os.environ["OPENAI_API_KEY"] = st.secrets["OPENAI_API_KEY"]
 +
 +pineKey = st.secrets["PINECONE_API_KEY"]
 +pineEnv = st.secrets["PINECONE_ENVIRONMENT"]
 +pineInd = st.secrets["PINECONE_INDEX_NAME2"]
 +pinemod = "text-embedding-3-small"
 +
 +
 +class Document:
 +    def __init__(self, text, metadata=None, doc_id=None):
 +        self.page_content = text
 +        self.metadata = metadata if metadata is not None else {}
 +        self.id = doc_id if doc_id is not None else str(uuid.uuid4())  # Uniek ID genereren
 +
 +
 +def main():
 +    doc_db = embedding_db()
 +    print(doc_db)
 +    print("Bestanden weggeschreven naar PineCone DB")
 +
 +
 +def embedding_db():
 +    embeddings = OpenAIEmbeddings(model=pinemod)  
 +    pc = Pinecone(api_key=pineKey)
 +
 +    if pineInd not in pc.list_indexes().names():
 +        pc.create_index(
 +            name=pineInd,
 +            dimension=1536,  
 +            metric='cosine',  
 +            spec=ServerlessSpec(
 +                cloud='gcp',  
 +                region=pineEnv  
 +            )
 +        )
 +
 +    docs_split = load_embeddings_from_dir()
 +
 +    doc_db = LangChainPinecone.from_documents(
 +        docs_split, 
 +        embeddings, 
 +        index_name=pineInd
 +    )
 +    
 +    return doc_db
 +
 +
 +def load_embeddings_from_dir():
 +    directory = './files/'
 +    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
 +
 +
 +# Start the app ===============================
 +if __name__ == "__main__":
 +    main()
 +</code>
 +
 +
 +[[https://github.com/AdrieVanDijke/pineconevuller|Code op GitHub]]
  
  
 ---- ----
  
-===== Pinecone en Langchain v0.1.0 ===== + 
-[[https://www.reddit.com/r/LangChain/comments/199mklo/langchain_011_is_not_working_with_pineconeclient/?rdt=45329|Langchain 0.1.1 is not working with pinecone-client 3.0.0]]+
pinecon.1707578410.txt.gz · Laatst gewijzigd: 2024/02/10 16:20 door a3dijke