alexkueck commited on
Commit
d0b3b8d
1 Parent(s): b415c82

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +32 -8
utils.py CHANGED
@@ -466,14 +466,38 @@ def llm_chain2(llm, prompt):
466
  result = llm_chain.run({"question": prompt})
467
  return result
468
  #############################################
469
- #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
470
- def rag_chain(llm, prompt, db):
471
- rag_chain = RetrievalQA.from_chain_type(llm,
472
- chain_type_kwargs = {"prompt": RAG_CHAIN_PROMPT},
473
- retriever = db.as_retriever(search_kwargs = {"k": 5}),
474
- return_source_documents = True)
475
- result = rag_chain({"query": prompt})
476
- return result["result"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
477
 
478
  ############################################
479
  # rag_chain Alternative für RAg mit Bild-Upload, da hier das llm so nicht genutzt werden kann und der prompt mit den RAG Erweiterungen anders übergeben wird
 
466
  result = llm_chain.run({"question": prompt})
467
  return result
468
  #############################################
469
+ #von der Vektordatenbank relevante Dokumente, die zum Prrompt passen raussuchen und mit anhängen
470
+ #vor dem Anhängen werden die Dokumente auf Relevnz gecheckt - sind nicht genüend relevante Docs dabei, wird der prompt von einer anderen KI neu formuliert und
471
+ #es wird versucht aus der Vektordatenbak dadurch weitere Dokumente, die relevant sind, herauszuholen.
472
+ def rag_chain(llm, prompt, retriever):
473
+ #Langgraph nutzen für ein wenig mehr Intelligenz beim Dokumente suchen
474
+ relevant_docs=[]
475
+ filtered_docs=[]
476
+ relevant_docs = retriever.get_relevant_documents(prompt)
477
+ print("releant docs1......................")
478
+ print(relevant_docs)
479
+ if (len(relevant_docs)>0):
480
+ filtered_docs = grade_documents_direct(prompt, relevant_docs)
481
+
482
+ neu_prompt=prompt
483
+ if (len(filtered_docs)<2): #frage neu formulieren
484
+ relevant_docs=[]
485
+ neu_prompt = transform_query_direct(prompt)
486
+ relevant_docs = retriever.get_relevant_documents(neu_prompt)
487
+ if (len(relevant_docs)>0):
488
+ print("releant docs2......................")
489
+ print(relevant_docs)
490
+ filtered_docs = grade_documents_direct(neu_prompt, relevant_docs)
491
+
492
+ if (len(filtered_docs)>0):
493
+ llm_chain = LLMChain(llm = llm, prompt = RAG_CHAIN_PROMPT)
494
+ result = llm_chain.run({"context": filtered_docs, "question": neu_prompt})
495
+ else:
496
+ #Normale Abfrage, da keine relevanten Dokumente gefunden
497
+ llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
498
+ result = llm_chain.run({"question": neu_prompt})
499
+ return result
500
+
501
 
502
  ############################################
503
  # rag_chain Alternative für RAg mit Bild-Upload, da hier das llm so nicht genutzt werden kann und der prompt mit den RAG Erweiterungen anders übergeben wird