Skip to content

Commit d178166

Browse files
committed
fix(dspy): normalize ColBERTv2 POST passage text
1 parent f1260ff commit d178166

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

‎dspy/dsp/colbertv2.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def colbertv2_post_request_v2(url: str, query: str, k: int):
7979
if "topk" not in res_json:
8080
raise ValueError(f"ColBERTv2 server returned an unexpected response: {res_json}")
8181

82-
return res_json["topk"][:k]
82+
return [{**d, "long_text": d["text"]} for d in res_json["topk"][:k]]
8383

8484

8585
@request_cache()

‎tests/retrievers/test_colbertv2.py‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import pytest
44

5+
import dspy
56
from dspy.dsp.colbertv2 import colbertv2_get_request_v2, colbertv2_post_request_v2
67

78

@@ -39,3 +40,24 @@ def test_post_request_success():
3940
with patch("dspy.dsp.colbertv2.requests.post", return_value=mock_response):
4041
result = colbertv2_post_request_v2("http://test4", "query", k=3)
4142
assert result[0]["text"] == "doc1"
43+
44+
45+
def test_post_request_success_adds_long_text():
46+
mock_response = MagicMock()
47+
mock_response.json.return_value = {"topk": [{"text": "doc1", "score": 0.9}]}
48+
49+
with patch("dspy.dsp.colbertv2.requests.post", return_value=mock_response):
50+
result = colbertv2_post_request_v2("http://test5", "query", k=3)
51+
52+
assert result[0]["long_text"] == "doc1"
53+
54+
55+
def test_colbert_post_wrapper_and_retrieve_use_long_text():
56+
mock_response = MagicMock()
57+
mock_response.json.return_value = {"topk": [{"text": "doc1", "score": 0.9}]}
58+
59+
with patch("dspy.dsp.colbertv2.requests.post", return_value=mock_response):
60+
retriever = dspy.ColBERTv2(url="http://test6", post_requests=True)
61+
assert retriever("query", simplify=True) == ["doc1"]
62+
with dspy.context(rm=retriever):
63+
assert dspy.Retrieve(k=1)("query").passages == ["doc1"]

0 commit comments

Comments
 (0)