Skip to content

Commit d8205cc

Browse files
committed
Update CHANGELOG
1 parent 6da10a8 commit d8205cc

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
- Introduced Neo4jMessageHistory and InMemoryMessageHistory classes for managing LLM message histories.
1212
- Added examples and documentation for using message history with Neo4j and in-memory storage.
1313
- Updated LLM and GraphRAG classes to support new message history classes.
14-
14+
- Introduced a linear hybrid search ranker for HybridRetriever and HybridCypherRetriever, allowing customizable ranking with an `alpha` parameter.
1515
### Changed
1616

1717
- Refactored index-related functions for improved compatibility and functionality.

src/neo4j_graphrag/retrievers/hybrid.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ def get_search_results(
198198
)
199199
query_vector = self.embedder.embed_query(query_text)
200200
parameters["query_vector"] = query_vector
201-
202201
search_query, _ = get_search_query(
203202
search_type=SearchType.HYBRID,
204203
return_properties=self.return_properties,

src/neo4j_graphrag/types.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
field_validator,
2727
model_validator,
2828
)
29+
from typing_extensions import Self
2930

3031
from neo4j_graphrag.utils.validation import validate_search_query_input
3132

@@ -169,12 +170,12 @@ def validate_ranker(cls, v: Union[str, HybridSearchRanker]) -> HybridSearchRanke
169170
allowed = ", ".join([r.value for r in HybridSearchRanker])
170171
raise ValueError(f"Invalid ranker type. Allowed values are: {allowed}.")
171172

172-
@model_validator(mode="before")
173-
def validate_alpha(cls, values: dict[str, Any]) -> dict[str, Any]:
174-
ranker, alpha = values.get("ranker"), values.get("alpha")
173+
@model_validator(mode="after")
174+
def validate_alpha(self) -> Self:
175+
ranker, alpha = self.ranker, self.alpha
175176
if ranker == HybridSearchRanker.LINEAR:
176177
if alpha is None:
177-
values["alpha"] = 0.5
178+
self.alpha = 0.5
178179
if isinstance(alpha, float) and not (0.0 <= alpha <= 1.0):
179180
raise ValueError("alpha must be between 0 and 1")
180181
else:
@@ -183,8 +184,8 @@ def validate_alpha(cls, values: dict[str, Any]) -> dict[str, Any]:
183184
"alpha parameter is only used when ranker is 'linear'. Ignoring alpha.",
184185
UserWarning,
185186
)
186-
values["alpha"] = None
187-
return values
187+
self.alpha = None
188+
return self
188189

189190

190191
class HybridCypherSearchModel(HybridSearchModel):

0 commit comments

Comments
 (0)