Views
No views yet
1Training Hyperparameters:
2 Max Steps: 3000
3 Learning Rate: 3e-4
4 Batch Size: 2 per device
5 Gradient Accumulation Steps: 4
6 Max Sequence Length: 8192
7 Weight Decay: 0.001
8 Warmup Ratio: 0.03
9 LR Scheduler: Linear
10 Optimizer: paged_adamw_32bit
11
12LoRA Configuration:
13 LoRA Alpha: 16
14 LoRA Dropout: 0.1
15 LoRA R: 64
16 Target Modules:
17 - gate_proj
18 - down_proj
19 - up_proj
20 - q_proj
21 - v_proj
22 - k_proj
23 - o_proj
24
25Quantization:
26 Quantization: 4-bit
27 Quantization Type: nf4
28 Compute Dtype: float16prompt = f"""### Query ###\n{user_message}\n\n### Source ###\n{fiches}\n\n### Answer ###\n"""<ref text="[Quoted text from source]">[Source ID]</ref>1import lancedb
2from vllm import LLM, SamplingParams
3import pandas as pd
4import lancedb
5from lancedb.pydantic import LanceModel, Vector
6from lancedb.embeddings import get_registry
7
8# Initialize LanceDB
9db = lancedb.connect("lancedb_data")
10
11# We will create some ficticious education documents to add to the database
12documents = [
13 {
14 "hash": "DOC001",
15 "main_title": "Inscription à l'école primaire",
16 "text": "L'inscription à l'école primaire en France se fait en deux étapes. Premièrement, les parents doivent se rendre à la mairie avec un justificatif de domicile, le livret de famille et le carnet de santé de l'enfant. Ensuite, ils doivent finaliser l'inscription directement à l'école. L'âge minimal pour l'inscription est de 3 ans."
17 },
18 {
19 "hash": "DOC002",
20 "main_title": "Calendrier des inscriptions scolaires",
21 "text": "Les inscriptions à l'école primaire doivent être effectuées au plus tard au mois de juin précédant la rentrée scolaire. Il est conseillé de s'y prendre à l'avance car certaines communes ont des périodes d'inscription spécifiques. La rentrée scolaire a généralement lieu début septembre."
22 },
23 {
24 "hash": "DOC003",
25 "main_title": "Documents requis pour l'inscription scolaire",
26 "text": "Pour inscrire un enfant à l'école primaire, les documents suivants sont généralement requis : justificatif de domicile de moins de 3 mois, livret de famille ou extrait d'acte de naissance, carnet de santé avec vaccinations à jour, et éventuellement le certificat de radiation si l'enfant était précédemment inscrit dans une autre école."
27 }
28]
29
30#BGE embedding model loading and creating the structure adapted to lance
31model = get_registry().get("sentence-transformers").create(name="BAAI/bge-m3", device="cuda")
32
33class Documents(LanceModel):
34 main_title: str
35 text: str = model.SourceField()
36 hash: str
37 vector: Vector(model.ndims()) = model.VectorField()
38
39#Create table
40table = db.create_table("example", schema=Documents, mode="overwrite")
41
42def process_batch(batch):
43 processed_documents = []
44 for item in batch:
45 try:
46 processed_documents.append({
47 "hash": item.get("hash", ""),
48 "main_title": item.get("main_title", ""),
49 "text": item.get("text", "")
50 # Add any other fields you want to include
51 })
52 except Exception as e:
53 print(f"Error processing item: {item}")
54 print(f"Error message: {str(e)}")
55 return processed_documents
56
57# Process and add documents in batches
58batch_size = 2 # Adjust as needed
59for i in tqdm(range(0, len(documents), batch_size)):
60 batch = documents[i:i+batch_size]
61 processed_batch = process_batch(batch)
62 if processed_batch: # Only add if the batch is not empty
63 table.add(processed_batch)
64
65# Load the model
66model_name = "PleIAs/Cassandre-RAG"
67llm = LLM(model_name, max_model_len=8128)
68
69# Set sampling parameters
70sampling_params = SamplingParams(
71 temperature=0.7,
72 top_p=0.95,
73 max_tokens=3000,
74 presence_penalty=1.2,
75 stop=["#END#"]
76)
77
78def hybrid_search(text):
79 results = table.search(text, query_type="hybrid").limit(3).to_pandas()
80 document = []
81 for _, row in results.iterrows():
82 hash_id = str(row['hash'])
83 title = row['main_title']
84 content = row['text']
85 document.append(f"**{hash_id}**\n{title}\n{content}")
86 return "\n\n".join(document)
87
88def prepare_prompt(query, sources):
89 return f"### Query ###\n{query}\n\n### Source ###\n{sources}\n\n### Answer ###\n"
90
91# Example query
92query = "Quelles sont les démarches pour inscrire un enfant à l'école primaire en France?"
93
94# Perform hybrid search
95sources = hybrid_search(query)
96
97# Prepare the prompt
98prompt = prepare_prompt(query, sources)
99
100# Generate the response
101outputs = llm.generate([prompt], sampling_params)
102generated_text = outputs[0].outputs[0].text
103
104print("Query:", query)
105print("\nSources:")
106print(sources)
107print("\nGenerated Response:")
108print(generated_text)
109
110print("\nFormatted Response:")
111print(simple_format_references(generated_text))1### Query ###
2Quelles sont les démarches pour inscrire un enfant à l'école primaire en France?
3
4### Source ###
5**DOC001**
6Inscription à l'école primaire
7L'inscription à l'école primaire en France se fait en deux étapes. Premièrement, les parents doivent se rendre à la mairie avec un justificatif de domicile, le livret de famille et le carnet de santé de l'enfant. Ensuite, ils doivent finaliser l'inscription directement à l'école. L'âge minimal pour l'inscription est de 3 ans.
8
9**DOC002**
10Calendrier des inscriptions scolaires
11Les inscriptions à l'école primaire doivent être effectuées au plus tard au mois de juin précédant la rentrée scolaire. Il est conseillé de s'y prendre à l'avance car certaines communes ont des périodes d'inscription spécifiques. La rentrée scolaire a généralement lieu début septembre.
12
13**DOC003**
14Documents requis pour l'inscription scolaire
15Pour inscrire un enfant à l'école primaire, les documents suivants sont généralement requis : justificatif de domicile de moins de 3 mois, livret de famille ou extrait d'acte de naissance, carnet de santé avec vaccinations à jour, et éventuellement le certificat de radiation si l'enfant était précédemment inscrit dans une autre école.
16
17### Answer ###
18Pour inscrire un enfant à l'école primaire en France :
19
201. Allez à la mairie avec les documents nécessaires. <ref text="L'inscription à l'école primaire en France se fait en deux étapes. Premièrement, les parents doivent se rendre à la mairie avec un justificatif de domicile, le livret de famille et le carnet de santé de l'enfant">DOC001</ref>
21
222. Inscrivez-vous avant juin pour la rentrée de septembre. <ref text="Les inscriptions à l'école primaire doivent être effectuées au plus tard au mois de juin précédant la rentrée scolaire">DOC002</ref>
23
243. L'enfant doit avoir au moins 3 ans. <ref text="L'âge minimal pour l'inscription est de 3 ans">DOC001</ref>
25
264. Finalisez l'inscription à l'école. <ref text="Ensuite, ils doivent finaliser l'inscription directement à l'école">DOC001</ref>
27
28Apportez un certificat de radiation si l'enfant change d'école. <ref text="et éventuellement le certificat de radiation si l'enfant était précédemment inscrit dans une autre école">DOC003</ref>
29
30Contactez votre mairie pour plus d'informations.
31
32#END#