-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix metadata deserialization in async mode for PGVector #125
base: main
Are you sure you want to change the base?
Fix metadata deserialization in async mode for PGVector #125
Conversation
Facing this very same issue. Wondering when this commit could be merged. Regards |
@@ -1058,17 +1058,38 @@ async def asimilarity_search_with_score_by_vector( | |||
|
|||
def _results_to_docs_and_scores(self, results: Any) -> List[Tuple[Document, float]]: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add a relevant unit test(s) for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @eyurtsev,
Thank you for your feedback. I've added unit tests to cover metadata deserialization in asynchronous operations, specifically targeting the _results_to_docs_and_scores
method. The new tests ensure that metadata is correctly deserialized and that Document
instances receive the proper metadata when using async_mode=True
.
Please review the updated tests and let me know if you have any further comments or suggestions.
Best regards,
@eyurtsev, please let me know if there is anything else I need to do. If not, please merge it. |
Problem
When using asynchronous methods with
PGVector
(async_mode=True
), themetadata
field retrieved from the database may be of typeFragment
(fromasyncpg
) or other non-dict types. This causes aValidationError
when theDocument
class expectsmetadata
to be a dictionary.Solution
This pull request modifies the
_results_to_docs_and_scores
method to ensure thatmetadata
is correctly converted into a dictionary before creatingDocument
instances. The method now handles different possible types ofmetadata
and attempts to deserialize it into a dict.Changes
_results_to_docs_and_scores
method inPGVector
class to handlemetadata
deserialization for different types (e.g.,dict
,str
,Fragment
).Testing
async_mode=True
and confirmed that themetadata
field is correctly deserialized and no longer causes validation errors.async_mode=False
.Related Issues