-
Notifications
You must be signed in to change notification settings - Fork 39
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
Change MultiQuery Prompt, Add Hybrid Search (BM25 + Embedding), Cohere Reranker & LLM Chain Filter #247
Merged
Merged
Change MultiQuery Prompt, Add Hybrid Search (BM25 + Embedding), Cohere Reranker & LLM Chain Filter #247
Changes from 6 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
bc71397
Add hybrid search and cohere reranker
davidgxue 1441a86
Merge branch 'main' into hybrid_search_reword_and_rerank
davidgxue 3e757f1
Add LLM Chain Filter + Shift Where Rerank Takes Place
davidgxue 00306ca
Add Customer Boolean LLM Parser to Bypass Error with LLM Chain Filter
davidgxue 1c6764e
Add comment
davidgxue a5eb57d
Remove comment
davidgxue ce1f61a
Add env var create schema if missing for weaviate
davidgxue ca74cdd
Add Weaviate config attr for create schema if missing
davidgxue 992beb5
Merge branch 'main' into hybrid_search_reword_and_rerank
davidgxue File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from langchain.retrievers.document_compressors.chain_filter_prompt import ( | ||
prompt_template, | ||
) | ||
from langchain_core.output_parsers import BaseOutputParser | ||
from langchain_core.prompts import PromptTemplate | ||
|
||
|
||
class CustomBooleanOutputParser(BaseOutputParser[bool]): | ||
"""Parse the output of an LLM call to a boolean. Default to True if response not formatted correctly.""" | ||
|
||
true_val: str = "YES" | ||
"""The string value that should be parsed as True.""" | ||
false_val: str = "NO" | ||
"""The string value that should be parsed as False.""" | ||
|
||
def parse(self, text: str) -> bool: | ||
"""Parse the output of an LLM call to a boolean by checking if YES/NO is contained in the output. | ||
|
||
Args: | ||
text: output of a language model. | ||
|
||
Returns: | ||
boolean | ||
|
||
""" | ||
cleaned_text = text.strip().upper() | ||
return self.false_val not in cleaned_text | ||
|
||
@property | ||
def _type(self) -> str: | ||
"""Snake-case string identifier for an output parser type.""" | ||
return "custom_boolean_output_parser" | ||
|
||
|
||
custom_llm_chain_filter_prompt_template = PromptTemplate( | ||
template=prompt_template, | ||
input_variables=["question", "context"], | ||
output_parser=CustomBooleanOutputParser(), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Note: this is a changed implementation from langchain. The original code looked like this https://github.com/langchain-ai/langchain/blob/master/libs/langchain/langchain/output_parsers/boolean.py
I implemented this parser because of an unfixed issue on LangChain here langchain-ai/langchain#11408 where their check on the Yes/NO is way too strict and throws unwanted errors during runtime.