younus00 commited on
Commit
4fcb92d
·
1 Parent(s): 2574102

feat: added RAG agent tools

Browse files
Files changed (1) hide show
  1. src/rag_agent.py +22 -12
src/rag_agent.py CHANGED
@@ -1,6 +1,7 @@
1
  from llama_index.core import SimpleDirectoryReader, Settings, VectorStoreIndex
2
  from llama_index.core.node_parser import SentenceSplitter
3
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
 
4
 
5
 
6
  class RAGAgent:
@@ -9,7 +10,6 @@ class RAGAgent:
9
  self.streaming = streaming
10
  self.llm = llm
11
  self.index = None
12
- self.query_engine = None
13
 
14
  def load_and_index_folder(self, folder_path, embedding_model="BAAI/bge-small-en-v1.5"):
15
  """
@@ -32,27 +32,37 @@ class RAGAgent:
32
  Settings.embed_model = HuggingFaceEmbedding(model_name=embedding_model)
33
  index = VectorStoreIndex.from_documents(nodes)
34
 
35
- # create query engine
36
  Settings.llm = self.llm
37
  self.index = index
38
- self.query_engine = index.as_query_engine(streaming=self.streaming)
39
-
40
- def query_index(self, query_text):
41
  """
42
- Query the indexed documents.
43
-
44
- Args:
45
- query_text (str): The query string.
46
 
47
  Returns:
48
- str: The RAG agent's response.
49
  """
50
  if not hasattr(self, 'index'):
51
  raise ValueError("Index not found. Please load and index a folder first.")
52
 
53
- response = self.query_engine.query(query_text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
- return str(response)
56
 
57
 
58
 
 
1
  from llama_index.core import SimpleDirectoryReader, Settings, VectorStoreIndex
2
  from llama_index.core.node_parser import SentenceSplitter
3
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
4
+ from llama_index.core.tools import FunctionTool, QueryEngineTool, RetrieverTool
5
 
6
 
7
  class RAGAgent:
 
10
  self.streaming = streaming
11
  self.llm = llm
12
  self.index = None
 
13
 
14
  def load_and_index_folder(self, folder_path, embedding_model="BAAI/bge-small-en-v1.5"):
15
  """
 
32
  Settings.embed_model = HuggingFaceEmbedding(model_name=embedding_model)
33
  index = VectorStoreIndex.from_documents(nodes)
34
 
35
+ # create index
36
  Settings.llm = self.llm
37
  self.index = index
38
+
39
+ def get_tools(self):
 
40
  """
41
+ Get tools for the RAG agent.
 
 
 
42
 
43
  Returns:
44
+ list: List of FunctionTool instances.
45
  """
46
  if not hasattr(self, 'index'):
47
  raise ValueError("Index not found. Please load and index a folder first.")
48
 
49
+ retriever = self.index.as_retriever()
50
+ query_engine = self.index.as_query_engine()
51
+
52
+ tools = [
53
+ RetrieverTool.from_defaults(
54
+ retriever,
55
+ name="RAG_Document_Retrieval",
56
+ description="Useful for retrieving relevant documents based on user queries."
57
+ ),
58
+ QueryEngineTool.from_defaults(
59
+ query_engine,
60
+ name="RAG_Document_Query",
61
+ description="Useful for answering questions by querying the indexed data directly."
62
+ )
63
+ ]
64
 
65
+ return tools
66
 
67
 
68