ashe0042 commited on
Commit
521d1ae
·
1 Parent(s): 8337957

LangSmith tracing wired into all five configs and eval harness

Browse files
requirements.txt CHANGED
@@ -7,3 +7,4 @@ psycopg2-binary==2.9.10
7
  python-dotenv==1.1.0
8
  requests==2.34.2
9
  sentence-transformers==3.4.1
 
 
7
  python-dotenv==1.1.0
8
  requests==2.34.2
9
  sentence-transformers==3.4.1
10
+ langsmith
src/configs/grounded.py CHANGED
@@ -8,6 +8,7 @@ import sys
8
  from pathlib import Path
9
 
10
  from dotenv import load_dotenv
 
11
  from openai import OpenAI
12
 
13
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
@@ -42,6 +43,7 @@ SYSTEM_PROMPT = (
42
  )
43
 
44
 
 
45
  def run(query: str, source_filter: list[str] | None = None) -> dict:
46
  query_embedding = embed_query(query)
47
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
 
8
  from pathlib import Path
9
 
10
  from dotenv import load_dotenv
11
+ from langsmith import traceable
12
  from openai import OpenAI
13
 
14
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
 
43
  )
44
 
45
 
46
+ @traceable(name="grounded")
47
  def run(query: str, source_filter: list[str] | None = None) -> dict:
48
  query_embedding = embed_query(query)
49
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
src/configs/hybrid.py CHANGED
@@ -7,6 +7,7 @@ import sys
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
 
10
  from openai import OpenAI
11
 
12
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
@@ -33,6 +34,7 @@ SYSTEM_PROMPT = (
33
  )
34
 
35
 
 
36
  def run(query: str, source_filter: list[str] | None = None) -> dict:
37
  query_embedding = embed_query(query)
38
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
 
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
10
+ from langsmith import traceable
11
  from openai import OpenAI
12
 
13
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
 
34
  )
35
 
36
 
37
+ @traceable(name="hybrid")
38
  def run(query: str, source_filter: list[str] | None = None) -> dict:
39
  query_embedding = embed_query(query)
40
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
src/configs/kg_augmented.py CHANGED
@@ -12,6 +12,7 @@ import sys
12
  from pathlib import Path
13
 
14
  from dotenv import load_dotenv
 
15
  from openai import OpenAI
16
 
17
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
@@ -181,6 +182,7 @@ def _format_chunk(chunk: dict) -> str:
181
  return f"[{chunk['source']} | {chunk['paragraph_id']}]\n{chunk['text']}\n"
182
 
183
 
 
184
  def run(query: str, source_filter: list[str] | None = None) -> dict:
185
  query_embedding = embed_query(query)
186
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
 
12
  from pathlib import Path
13
 
14
  from dotenv import load_dotenv
15
+ from langsmith import traceable
16
  from openai import OpenAI
17
 
18
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
 
182
  return f"[{chunk['source']} | {chunk['paragraph_id']}]\n{chunk['text']}\n"
183
 
184
 
185
+ @traceable(name="kg_augmented")
186
  def run(query: str, source_filter: list[str] | None = None) -> dict:
187
  query_embedding = embed_query(query)
188
  retrieved_chunks = rrf_search(query, query_embedding, source_filter=source_filter, top_k=5)
src/configs/naive.py CHANGED
@@ -7,6 +7,7 @@ import sys
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
 
10
  from openai import OpenAI
11
 
12
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
@@ -33,6 +34,7 @@ SYSTEM_PROMPT = (
33
  )
34
 
35
 
 
36
  def run(query: str, source_filter: list[str] | None = None) -> dict:
37
  query_embedding = embed_query(query)
38
  retrieved_chunks = dense_search(query_embedding, source_filter=source_filter, top_k=5)
 
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
10
+ from langsmith import traceable
11
  from openai import OpenAI
12
 
13
  sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
 
34
  )
35
 
36
 
37
+ @traceable(name="naive")
38
  def run(query: str, source_filter: list[str] | None = None) -> dict:
39
  query_embedding = embed_query(query)
40
  retrieved_chunks = dense_search(query_embedding, source_filter=source_filter, top_k=5)
src/configs/rerank.py CHANGED
@@ -7,6 +7,7 @@ import sys
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
 
10
  from openai import OpenAI
11
  from sentence_transformers import CrossEncoder
12
 
@@ -36,6 +37,7 @@ SYSTEM_PROMPT = (
36
  )
37
 
38
 
 
39
  def run(query: str, source_filter: list[str] | None = None) -> dict:
40
  query_embedding = embed_query(query)
41
  candidates = rrf_search(query, query_embedding, source_filter=source_filter, top_k=20)
 
7
  from pathlib import Path
8
 
9
  from dotenv import load_dotenv
10
+ from langsmith import traceable
11
  from openai import OpenAI
12
  from sentence_transformers import CrossEncoder
13
 
 
37
  )
38
 
39
 
40
+ @traceable(name="rerank")
41
  def run(query: str, source_filter: list[str] | None = None) -> dict:
42
  query_embedding = embed_query(query)
43
  candidates = rrf_search(query, query_embedding, source_filter=source_filter, top_k=20)
src/eval.py CHANGED
@@ -6,6 +6,8 @@ results for comparison. No scoring/taxonomy logic here yet.
6
  import sys
7
  from pathlib import Path
8
 
 
 
9
  sys.path.insert(0, str(Path(__file__).resolve().parent))
10
 
11
  from configs.grounded import run as run_grounded
@@ -23,6 +25,7 @@ CONFIG_RUNNERS = {
23
  }
24
 
25
 
 
26
  def evaluate_query(query: str, source_filter: list[str] | None = None) -> dict:
27
  results = {}
28
 
 
6
  import sys
7
  from pathlib import Path
8
 
9
+ from langsmith import traceable
10
+
11
  sys.path.insert(0, str(Path(__file__).resolve().parent))
12
 
13
  from configs.grounded import run as run_grounded
 
25
  }
26
 
27
 
28
+ @traceable(name="evaluate_query")
29
  def evaluate_query(query: str, source_filter: list[str] | None = None) -> dict:
30
  results = {}
31