fikird commited on
Commit
edb4444
·
1 Parent(s): 53a521c

Fix async issues and improve error handling

Browse files
Files changed (2) hide show
  1. rag_engine.py +28 -19
  2. search_engine.py +3 -1
rag_engine.py CHANGED
@@ -40,7 +40,7 @@ class RAGEngine:
40
  logger.error(f"Error processing content: {str(e)}")
41
  raise
42
 
43
- async def search_and_process(self, query: str, max_results: int = 5, similarity_k: int = 3) -> Dict:
44
  """Search the web and process results with RAG"""
45
  try:
46
  # Get web search results
@@ -49,31 +49,40 @@ class RAGEngine:
49
  if 'error' in web_results:
50
  return {'error': web_results['error']}
51
 
 
 
 
52
  # Process and store new content
53
- if 'results' in web_results and web_results['results']:
54
- for result in web_results['results']:
55
- if 'content' in result:
56
  self.process_and_store_content(
57
  result['content'],
58
  metadata={'url': result.get('url'), 'title': result.get('title')}
59
  )
 
 
 
60
 
61
  # Perform similarity search if we have stored vectors
62
  if self.vector_store:
63
- similar_docs = self.vector_store.similarity_search_with_score(
64
- query,
65
- k=similarity_k
66
- )
67
-
68
- # Add similarity results to web results
69
- web_results['similar_chunks'] = [
70
- {
71
- 'content': doc[0].page_content,
72
- 'metadata': doc[0].metadata,
73
- 'similarity_score': doc[1]
74
- }
75
- for doc in similar_docs
76
- ]
 
 
 
77
 
78
  return web_results
79
 
@@ -91,7 +100,7 @@ class RAGEngine:
91
  {
92
  'content': doc[0].page_content,
93
  'metadata': doc[0].metadata,
94
- 'similarity_score': doc[1]
95
  }
96
  for doc in similar_docs
97
  ]
 
40
  logger.error(f"Error processing content: {str(e)}")
41
  raise
42
 
43
+ def search_and_process(self, query: str, max_results: int = 5, similarity_k: int = 3) -> Dict:
44
  """Search the web and process results with RAG"""
45
  try:
46
  # Get web search results
 
49
  if 'error' in web_results:
50
  return {'error': web_results['error']}
51
 
52
+ if not web_results.get('results'):
53
+ return {'error': 'No results found'}
54
+
55
  # Process and store new content
56
+ for result in web_results['results']:
57
+ if result and isinstance(result, dict) and 'content' in result:
58
+ try:
59
  self.process_and_store_content(
60
  result['content'],
61
  metadata={'url': result.get('url'), 'title': result.get('title')}
62
  )
63
+ except Exception as e:
64
+ logger.error(f"Error processing result: {str(e)}")
65
+ continue
66
 
67
  # Perform similarity search if we have stored vectors
68
  if self.vector_store:
69
+ try:
70
+ similar_docs = self.vector_store.similarity_search_with_score(
71
+ query,
72
+ k=similarity_k
73
+ )
74
+
75
+ # Add similarity results to web results
76
+ web_results['similar_chunks'] = [
77
+ {
78
+ 'content': doc[0].page_content,
79
+ 'metadata': doc[0].metadata,
80
+ 'similarity_score': float(doc[1])
81
+ }
82
+ for doc in similar_docs
83
+ ]
84
+ except Exception as e:
85
+ logger.error(f"Error in similarity search: {str(e)}")
86
 
87
  return web_results
88
 
 
100
  {
101
  'content': doc[0].page_content,
102
  'metadata': doc[0].metadata,
103
+ 'similarity_score': float(doc[1])
104
  }
105
  for doc in similar_docs
106
  ]
search_engine.py CHANGED
@@ -135,7 +135,9 @@ class WebSearchEngine:
135
  """Perform search and process results"""
136
  try:
137
  # Search using DuckDuckGo
138
- search_results = list(self.ddgs.text(query, max_results=max_results))
 
 
139
 
140
  results = []
141
  for result in search_results:
 
135
  """Perform search and process results"""
136
  try:
137
  # Search using DuckDuckGo
138
+ search_results = []
139
+ for result in self.ddgs.text(query, max_results=max_results):
140
+ search_results.append(result)
141
 
142
  results = []
143
  for result in search_results: