File size: 2,027 Bytes
3bcd8f6
 
6a48f7d
0167b87
cdb8feb
0167b87
 
 
 
 
 
 
 
cdb8feb
0167b87
 
 
 
6a48f7d
3bcd8f6
0167b87
3bcd8f6
 
 
 
6a48f7d
3bcd8f6
 
 
cdb8feb
3bcd8f6
 
 
 
 
cdb8feb
 
 
 
 
3bcd8f6
 
cdb8feb
 
6a48f7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from src.utils.tooling import tool

def format_the(query, results):

    if results ==  "No relevant data found in the knowledge database. Have you checked any webpages or use any tools? If so, please try to find more relevant data.":
        return results
    else:
        formatted_text = f"# Knowledge for '{query}' \n\n"
        formatted_text += f"Fetched {len(results['documents'])} relevant documents.\n\n"
        try:
            for i in range(len(results['documents'])):
                formatted_text += f"## Document {i + 1} ---\n"
                formatted_text += f"- Content: '''\n{results['documents'][i]}\n'''\n"
                formatted_text += f"- Metadata: {results['metadatas'][i]}\n"
                formatted_text += f"---\n\n"
        except Exception as e:
            return f"Error: Index out of range. Please check the results structure. {str(e)}"
        return formatted_text

@tool
def retrieve_knowledge(query: str, n_results: int = 2) -> str:
    """
    Retrieves knowledge from a database with a provided query.
    Args:
        query (str): The query to search for in the vector store.
        n_results (int, optional): The number of results to return. Default is 1.
    """
    try:
        from src.utils.vector_store import retrieve_from_database
        distance_threshold = 0.4
        results = retrieve_from_database(
            query=query,
            n_results=n_results,
            distance_threshold=distance_threshold
        )
        results_formatted = format_the(query, results)
        if results_formatted:
            return results_formatted
        else:
            return "No relevant data found in the knowledge database. Have you checked any webpages or use any tools? If so, please try to find more relevant data."

    except Exception as e:
        print(f"Error retrieving knowledge: {e}")
        return f"No relevant data found in the knowledge database. Have you checked any webpages or use any tools? If so, please try to find more relevant data."