Skip to content

Commit 37295e1

Browse files
authored
Merge pull request #2 from sheginabo/enhancement/rerank-token-tracking
feat(voyageai): expose token usage in rerank results
2 parents de8c2df + caf8d4c commit 37295e1

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

libs/voyageai/langchain_voyageai/rerank.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,18 @@ def compress_documents(
114114
115115
Returns:
116116
A sequence of compressed documents in relevance_score order.
117+
Each document's metadata includes 'relevance_score' and 'total_tokens'.
117118
"""
118119
if len(documents) == 0:
119120
return []
120121

122+
rerank_result = self._rerank(documents, query)
121123
compressed = []
122-
for res in self._rerank(documents, query).results:
124+
for res in rerank_result.results:
123125
doc = documents[res.index]
124126
doc_copy = Document(doc.page_content, metadata=deepcopy(doc.metadata))
125127
doc_copy.metadata["relevance_score"] = res.relevance_score
128+
doc_copy.metadata["total_tokens"] = rerank_result.total_tokens
126129
compressed.append(doc_copy)
127130
return compressed
128131

@@ -142,14 +145,17 @@ async def acompress_documents(
142145
143146
Returns:
144147
A sequence of compressed documents in relevance_score order.
148+
Each document's metadata includes 'relevance_score' and 'total_tokens'.
145149
"""
146150
if len(documents) == 0:
147151
return []
148152

153+
rerank_result = await self._arerank(documents, query)
149154
compressed = []
150-
for res in (await self._arerank(documents, query)).results:
155+
for res in rerank_result.results:
151156
doc = documents[res.index]
152157
doc_copy = Document(doc.page_content, metadata=deepcopy(doc.metadata))
153158
doc_copy.metadata["relevance_score"] = res.relevance_score
159+
doc_copy.metadata["total_tokens"] = rerank_result.total_tokens
154160
compressed.append(doc_copy)
155161
return compressed

libs/voyageai/tests/integration_tests/test_rerank.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def test_sync() -> None:
3838
query="When is the Apple's conference call scheduled?", documents=documents
3939
)
4040
assert len(doc_list) == len(result)
41+
for doc in result:
42+
assert "total_tokens" in doc.metadata
43+
assert isinstance(doc.metadata["total_tokens"], int)
44+
assert doc.metadata["total_tokens"] > 0
4145

4246

4347
async def test_async() -> None:
@@ -66,3 +70,7 @@ async def test_async() -> None:
6670
query="When is the Apple's conference call scheduled?", documents=documents
6771
)
6872
assert len(doc_list) == len(result)
73+
for doc in result:
74+
assert "total_tokens" in doc.metadata
75+
assert isinstance(doc.metadata["total_tokens"], int)
76+
assert doc.metadata["total_tokens"] > 0

libs/voyageai/tests/unit_tests/test_rerank.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ def test_rerank_unit_test(mocker: Any) -> None:
5353
Document(
5454
page_content="Photosynthesis in plants converts light energy into "
5555
"glucose and produces essential oxygen.",
56-
metadata={"relevance_score": 0.9},
56+
metadata={"relevance_score": 0.9, "total_tokens": 255},
5757
),
5858
Document(
5959
page_content="The Mediterranean diet emphasizes fish, olive oil, and "
6060
"vegetables, believed to reduce chronic diseases.",
61-
metadata={"relevance_score": 0.8},
61+
metadata={"relevance_score": 0.8, "total_tokens": 255},
6262
),
6363
]
6464

0 commit comments

Comments
 (0)