LangChain Advanced RAG - Two-Stage Retrieval with Cross Encoder (BERT)
Vložit
- čas přidán 1. 07. 2024
- In this Video we discuss advanced retrieval techniques from Vector Databases with Query Expansion and Two-Stage Retrieval with a Cross Encoder. We use another Reranker on top to take the famous "lost in the middle" problem into consideration.
Code: github.com/Coding-Crashkurse/...
Timestamps:
0:00 Two-Stage Retrieval in theory
2:44 RAG and it´s issues
9:31 Query Expansion
11:50 Cross Encoder Reranking
13:50 LongContext Reorder
#openai #langchain
Best 15 mins of my day! You explained every single component in the code clear and crisp! Excited to check the other videos of yours. Thanks a bunch
Very informative.👍 Love the umap visualization 2 see the query and the embeddings.
UniqueList = list(set(ListWithDuplicates)) to replace those nested for loops. Love your content!
Does not work for complex objects in that way probably;)
The most productive 14 minutes of my day watching and learning from this video :)
great! Thanks for your comment
Thanks for the video. Perfect timing…. Need this for tomorrow.
I don't know the umap library, its very interesting. Good explanation about RAG advanced techniques, sucess for you!
thank you :)
This channel is a gem 💎
Youre vids are insanely good. I doubt there is a better ai-prog-tuber
Thank you so much :)
This video is terrific, I'll give it a try!
Thank you!
Thank you for the great video:)
Thanks for your comment. Glas you enjoyed it :)
Awesome video. So I glad I found this channel. Long shot question:
After testing several chunk/overlaps, my experimentation indicates an optimal chunk_size=1000 and overlap=200. My RAG contains about 10 medical textbooks (~50,000 pages). However, every video I see on RAG nobody uses chunks anywhere near that large. Does it seem improbable that my ideal chunk size is 1,000, or is there likely another variable at play?
Did you find anything?
At least from my experience so far, with fixed chunk methodology (whatever be the chunk size or overlap) its easier to do POC but not for production grade quality. Did you try semantic chunking or chunking based on sections/headings and then capture relationship between the chunks via graph database?
Thank, always nice videos!
Do you have a favorite german cross-encoder?
No, I don´t! I did not work that much with cross encoders to be honest
Спасибо!!
Your welcome andreij:)
@@codingcrashcourses8533 I cannot run the code in VSCode.
When running the import:
From langchain_community.document_loaders import TextLoader, DirectoryLoader
Error:
File c:\Python311\Lib\enum.py:784, in EnumType.__getattr__(cls, name)
782 return cls._member_map_[name]
783 except KeyError:
--> 784 raise AttributeError(name) from None
AttributeError: COBOL
I have installed the langchain-community library.
Can u please make a video on retrieving data from SQL using SQL agents & Runnable using LCEL. If not possible here, if you can update the same in the udemy course. It helps alot
I would rather do it here than on my udemy course, since it´s quite specific. Give me some time to do something like that please ;-)
Looking for a similar video with LangChain templates. Production level SQL-ollama app. Greatly appreciated 🙏❤
@@Sonu007OP have not worked with ollama yet, i am afraid my 7 year old computer wont get it running ^^
Video about this topic will be released on 03/25 and 03/28 :)
Thanks for the video..
But while genering queries using llm_chain.invoke(query), facing exception related to output parser.
OutputParserException: Invalid json output:
I resolved it temporarily by removing parser al together and formatted the output in the next step. Thank you again for the video. It is helpful.
Weird. Normally i never have Problems with that parser
How much computation resource (specifically GPU) required in running this cross encoder model?
It also works on a cpu
LLMChain() is deprecated and the output_parser in the examples also cause json output error.
Would be nice, if you could update the github code. Thank you
If anyone having issue with json output, here is a fix:
from langchain_core.output_parsers import BaseOutputParser
class LineList(BaseModel):
lines: list[str] = Field(description="Lines of text")
class LineListOutputParser(BaseOutputParser[LineList]):
def __init__(self) -> None:
super().__init__(pydantic_object=LineList)
def parse(self, text: str) -> list[str]:
lines = text.strip().split("
")
return lines
What's the best way to evaluate this RAG?
Difficult topic. Performance or output Quality?
@@codingcrashcourses8533 well it should be advanced as much as possible since I got an advanced rag . I saw many cases that people used ragas,trulens etc. I'm indecisive
Is this open source/free?
You mean the cross encoder? Yes