53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
|
|
import os
|
||
|
|
from dotenv import load_dotenv
|
||
|
|
#from langchain_community.document_loaders import TextLoader
|
||
|
|
from langchain_community.document_loaders import Docx2txtLoader
|
||
|
|
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
||
|
|
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
||
|
|
from langchain_qdrant import QdrantVectorStore
|
||
|
|
|
||
|
|
# 1. Chargement de la clé API
|
||
|
|
load_dotenv()
|
||
|
|
api_key = os.getenv("GOOGLE_API_KEY")
|
||
|
|
|
||
|
|
def inserer_documents():
|
||
|
|
print("1. Chargement du document...")
|
||
|
|
# Assurez-vous d'avoir un fichier mon_document.txt à côté de ce script
|
||
|
|
#loader = TextLoader("resources/cv.docx", encoding="utf-8")
|
||
|
|
loader = Docx2txtLoader("resources/cv.docx")
|
||
|
|
documents = loader.load()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
print("2. Découpage du texte en morceaux...")
|
||
|
|
# On coupe le texte par blocs de 500 caractères, avec un chevauchement de 50 caractères
|
||
|
|
# (Le chevauchement évite de couper une phrase importante au milieu)
|
||
|
|
text_splitter = RecursiveCharacterTextSplitter(
|
||
|
|
chunk_size=500,
|
||
|
|
chunk_overlap=50
|
||
|
|
)
|
||
|
|
morceaux = text_splitter.split_documents(documents)
|
||
|
|
print(f"-> Le document a été découpé en {len(morceaux)} morceau(x).")
|
||
|
|
|
||
|
|
print("3. Connexion au modèle d'Embedding...")
|
||
|
|
# C'EST CRUCIAL : C'est le même modèle que dans votre script de recherche !
|
||
|
|
embeddings = GoogleGenerativeAIEmbeddings(model="models/gemini-embedding-001")
|
||
|
|
|
||
|
|
print("4. Envoi vers Qdrant...")
|
||
|
|
# On utilise la méthode "from_documents" qui va tout faire d'un coup :
|
||
|
|
# Créer la collection (si elle n'existe pas), vectoriser, et sauvegarder.
|
||
|
|
qdrant_url = "http://qdrant:6333"
|
||
|
|
nom_collection = "rag-1"
|
||
|
|
|
||
|
|
QdrantVectorStore.from_documents(
|
||
|
|
documents=morceaux,
|
||
|
|
embedding=embeddings,
|
||
|
|
url=qdrant_url,
|
||
|
|
collection_name=nom_collection,
|
||
|
|
)
|
||
|
|
|
||
|
|
print("✅ Succès ! Les données sont dans Qdrant.")
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
inserer_documents()
|