Tests
rag = RAGPipeline(dimension=3)
rag.add_documents(
['Paris est en France', 'Berlin est en Allemagne', 'Tokyo est au Japon'],
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
)
# Retrieve
results = rag.retrieve([1, 0.1, 0], k=2)
assert len(results) == 2, f'Doit renvoyer 2 résultats, got {len(results)}'
assert results[0]['text'] == 'Paris est en France', f'Premier résultat incorrect: {results[0]["text"]}'
assert results[0]['rank'] == 1, 'Le premier résultat doit avoir rank 1'
assert results[1]['rank'] == 2
assert isinstance(results[0]['score'], float), 'Le score doit etre un float'
# Build prompt
prompt = rag.build_prompt('Ou est Paris?', [1, 0, 0], k=2)
assert 'Contexte:' in prompt, 'Le prompt doit contenir Contexte:'
assert 'Question: Ou est Paris?' in prompt, 'Le prompt doit contenir la question'
assert 'Paris est en France' in prompt, 'Le contexte doit contenir le document pertinent'
# Ajout incrementiel
rag.add_documents(['Madrid est en Espagne'], [[0.5, 0.5, 0]])
results2 = rag.retrieve([0.5, 0.5, 0], k=1)
assert results2[0]['text'] == 'Madrid est en Espagne'