-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AAD : Prototypé sur le RAG #87
Comments
Premier jet de RAG réalisé. C’est très intéressant, car cela ne nous oblige pas à revoir fondamentalement l’usage d’Ollama. Bien que le RAG ait de grosses limites (il peut recommander des aides non pertinentes ou en exclure certaines qui le seraient), il permet de se concentrer logiquement sur un nombre limité d’aides présentant un contexte proche. Cela aboutit à un système de recherche plus rapide et ciblé. Actuellement, le RAG fonctionne ainsi : Utiliser la description du projet de l'utilisateur comme prompt et en générer les embeddings.def generate_ollama_embeddings(
prompt: str,
ollama_api_url: str,
model: str = "nomic-embed-text",
bearer_token: str = None
):
ollama_api_endpoint = f"{ollama_api_url}/api/embeddings/"
# Ensure options is a dictionary (default empty dictionary if None)
headers = {'Content-Type': 'application/json'}
# Handle the bearer token with special character encoding
if bearer_token:
utf8_bytes = f'Bearer {bearer_token}'.encode('utf-8')
auth_header_value = utf8_bytes.decode('latin1')
headers['Authorization'] = auth_header_value
data = {
"model": model,
"prompt": prompt,
}
try:
response = requests.post(ollama_api_endpoint, data=json.dumps(data), headers=headers)
# print(f"Status Code: {response.status_code}")
# print(f"Response Text: {response.text}")
return response.json() if response.status_code == 200 else None
except Exception as error:
print('-----------------------------------------')
print('Something went wrong when calling Ollama')
print(error)
return None Comparer les embeddings du projet utilisateur à ceux de l’ensemble des aides à l’aide de la cosine similarity.def cosine_similarity_multi(user_prompt_emb:list, aides_description_list_mb_emb:list[list]):
dot_products = np.dot(aides_description_list_mb_emb, user_prompt_emb)
norm_user_prompt_emb = np.linalg.norm(user_prompt_emb)
norms_list_mb_emb = np.linalg.norm(aides_description_list_mb_emb, axis=1)
return dot_products / (norm_user_prompt_emb * norms_list_mb_emb) Retenir les N aides ayant la meilleure cosine similarity.Effectuer un scoring sur ces aides sélectionnées. |
Exemple de limite cinglante du RAG (il s'agit des aides avec la cosine_similarity la plus élevée) :
|
No description provided.
The text was updated successfully, but these errors were encountered: