Skip to content

Commit 106865c

Browse files
[DAGE-20] alignment with Naz update on opensearch query template
1 parent 1bf6ef5 commit 106865c

3 files changed

Lines changed: 30 additions & 16 deletions

File tree

rre-dataset-generator/dataset_generator.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ def add_user_queries(config: Config, data_store: DataStore):
3838
if config.queries is not None:
3939
with open(config.queries, 'r', encoding='utf-8') as file:
4040
for line in file:
41-
if line.strip():
42-
data_store.add_query(line)
41+
cleaned = line.strip()
42+
if cleaned:
43+
data_store.add_query(cleaned)
4344

44-
def generate_and_add_queries(config: Config, data_store: DataStore, llm_service: LLMService, docs_to_generate_queries: List[Document]) -> None:
45+
def generate_and_add_queries(llm_service: LLMService, config: Config, data_store: DataStore) -> None:
4546
num_queries_per_doc: int = int(((config.num_queries_needed - len(data_store.get_queries())) // config.doc_number) * 1.5)
4647

4748
for doc in docs_to_generate_queries:
@@ -54,7 +55,7 @@ def generate_and_add_queries(config: Config, data_store: DataStore, llm_service:
5455
data_store.add_rating_score(query_id, doc.id, max(config.relevance_label_set))
5556

5657

57-
def retrieve_and_add_documents(config: Config, data_store: DataStore, search_engine: BaseSearchEngine) -> None:
58+
def retrieve_and_add_documents(config: Config, data_store: DataStore) -> None:
5859
for query_rating_context in data_store.get_queries():
5960
docs_eval: List[Document] = search_engine.fetch_for_evaluation(keyword=query_rating_context.get_query(),
6061
query_template=config.query_template,
@@ -63,7 +64,7 @@ def retrieve_and_add_documents(config: Config, data_store: DataStore, search_eng
6364
if not data_store.has_document(doc.id):
6465
data_store.add_document(doc.id, doc)
6566

66-
def add_cartesian_product_scores(config: Config, data_store: DataStore, llm_service: LLMService) -> None:
67+
def add_cartesian_product_scores(llm_service: LLMService, config: Config, data_store: DataStore) -> None:
6768
for query_rating_context in data_store.get_queries():
6869
for doc in data_store.get_documents():
6970
if not data_store.has_rating_score(query_rating_context.get_query_id(), doc.id):
@@ -97,11 +98,11 @@ def add_cartesian_product_scores(config: Config, data_store: DataStore, llm_serv
9798
doc_fields=config.doc_fields)
9899
log.debug(f"Number of documents retrieved for generation: {len(docs_to_generate_queries)}")
99100

100-
generate_and_add_queries(config, data_store, service, docs_to_generate_queries)
101+
generate_and_add_queries(service, config, data_store)
101102

102-
retrieve_and_add_documents(config, data_store, search_engine)
103+
retrieve_and_add_documents(config, data_store)
103104

104-
add_cartesian_product_scores(config, data_store, service)
105+
add_cartesian_product_scores(service, config, data_store)
105106

106107
writer.write(config.output_destination)
107108

rre-dataset-generator/src/search_engine/elasticsearch_search_engine.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import json
2+
from json import JSONDecodeError
3+
24
import requests
35
from urllib.parse import urljoin
46
from pydantic import HttpUrl
@@ -86,13 +88,17 @@ def fetch_for_evaluation(self, query_template: str, doc_fields: List[str], keywo
8688
Returns:
8789
List[Document]: A list of documents matching the query.
8890
"""
89-
if keyword:
90-
payload = json.loads(query_template.replace(self.PLACEHOLDER, keyword))
91-
else:
92-
payload = {
93-
"query": {"match_all": {}}
94-
}
95-
payload["_source"] = doc_fields
91+
try:
92+
payload: Dict[str, Any] = json.loads(query_template)
93+
except JSONDecodeError as e:
94+
raise ValueError(f"Invalid JSON query_template: {e}")
95+
96+
query_string_obj = payload.get("query", {}).get("query_string", {})
97+
if "query" in query_string_obj:
98+
query_string_obj["query"] = query_string_obj["query"].replace(self.PLACEHOLDER, keyword)
99+
100+
fields = doc_fields if self.UNIQUE_KEY in doc_fields else doc_fields + [self.UNIQUE_KEY]
101+
payload["_source"] = fields
96102
return self._search(payload)
97103

98104
def _search(self, payload: Dict[str, Any]) -> List[Document]:

rre-dataset-generator/tests/unit/resources/elasticsearch_good_config.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
query_template: '{ "query": { "match": { "message": "#$query##" } } }'
1+
query_template: >
2+
{
3+
"query": {
4+
"match": {
5+
"message": "#$query##"
6+
}
7+
}
8+
}
29
search_engine_type: "elasticsearch"
310
search_engine_collection_endpoint: 'http://localhost:9200/testcore/'
411
doc_number: 100

0 commit comments

Comments
 (0)