[HN Gopher] Retrieval in LangChain ___________________________________________________________________ Retrieval in LangChain Author : gk1 Score : 166 points Date : 2023-03-25 12:21 UTC (2 days ago) (HTM) web link (blog.langchain.dev) (TXT) w3m dump (blog.langchain.dev) | amrb wrote: | LangChains is a great tool and looking forward to swapping | between LLM's like it was an API! | 35mm wrote: | Can anyone use the ChatGPT Retrieval plugin yet? Or is it limited | to whitelisted beta testers? | apetresc wrote: | Still whitelisted atm. | neilellis wrote: | Who would have thought we'd be able to follow the birth of Skynet | in real-time. | ryanwaggoner wrote: | A little off-topic: are LLMs the death knell for new languages, | frameworks, tools, processes, etc? I can see how an LLM is going | to be such a huge productivity boost that they'll be hard to | avoid everywhere, but then new stuff won't have any training | data. Will anyone ever go through the effort of everything being | 10x - 100x less effective with new tools since there's no | training data? | anonymouslambda wrote: | Does anyone have an opinion on LangChain versus Deepset Haystack? | | Haystack seems more polished for NLP tasks, but LangChain looks | more extensible long term? | | Thanks! | jacooper wrote: | How can I use this with llama ? | justanotheratom wrote: | https://github.com/linonetwo/langchain-alpaca | Spivak wrote: | Really excited to see LangChain moving really fast in this space. | They turn your favorite Llm into a real boy that can do real | work. | | Some "agents" in their vernacular that I've built. | | * A reminder system that can take a completely free-form English | description and turn it into a precise date and time and schedule | it with an external scheduler. | | * A tool that can take math either in English or ascii like y = | 2x^2 + ln(x) and turn it into rendered LaTeX. | | * A line editor that let's you ingest Word documents and suggests | edits for specific sections. | | * A chess engine. | | Like it's crazy at just how trivial all this stuff is to build. | mark_l_watson wrote: | I share your enthusiasm for LangChain (as well as LlamaIndex). | I don't remember being as obsessed by any new technology. I am | writing a book on the subject [1] but to be honest the | documentation and available examples are so very good, that my | book has turned into just a write up of my own little projects. | | I agree that some things really are trivial to implement and I | think this opens the door to non-programmers who know a little | Python or JavaScipt to scratch their own itches and build | highly personalized systems. | | [1] https://leanpub.com/langchain | pumanoir wrote: | These examples are great, but the chess engine sounds specially | interesting and can't think of how I'd do it with langchain. Do | you have a git link or something written down, on how you | accomplished this? | [deleted] | vthallam wrote: | Noob here. Is this similar to what ChatGPT Retrieval plugin does, | but for other LLM's? | 0xDEF wrote: | LangChain is LLM agnostic. People are using it with Cohere's | LLMs and even self-hosted LLMs like LLaMA. | blueorange8 wrote: | It's the backend of retrieval plugin basically | gk1 wrote: | The retrieval plugin does not use LangChain, afaik. | blueorange8 wrote: | Guess I can't delete my comment but I guess "basically" in | this context means a similar type implementation | justanotheratom wrote: | I would say LangChain is similar to ChatGPT itself. | | - LangChain's Retriever is analogous to ChatGPT Retrieval | Plugin. - In general, LangChain has tools for what ChatGPT | calls Plugins. - ChatGPT uses OpenAI's GPT-4 LLM. LangChain | uses ... any LLM (i.e. configurable). | 40291misteryo wrote: | [dead] | jcims wrote: | Enabling the 'terminal' and 'python-repl' tools in a langchain | agent demonstrates some pretty remarkable behavior. | | The link below is the transcript of a session in which I asked | the agent to create a hello world script and executes it. The | only input I provide is on line 17. Everything else is the | langchain agent iteratively taking an action, observing the | results and deciding the next action to take. | | This is just scratching the surface. I've seen it do some crazy | stuff with the AWS CLI. And this is just with GPT-3.5, I don't | have access to GPT-4 yet and it clearly has better capabilities. | | https://pastebin.com/qJsbufVj | ArenaSource wrote: | If you put GPT-4 on a loop with access to the shell it manages | to do whatever is needed to finish the job | | https://raw.githubusercontent.com/jla/gpt-shell/assets/examp... | jcims wrote: | Yeah I can't wait to get API access to gpt-4, it is a | stepwise more capable based on the stuff I've done with | chatgpt on gpt-4. | | That said, even gpt-3.5 will try multiple routes to get to | the same endpoint. It seems to get distracted pretty easily | though. | hombre_fatal wrote: | One demo of gpt-4's superiority over gpt-3 is to come up | with a prompt that determines the language of some given | text. | | I couldn't figure out a gpt-3 prompt that could handle | "This text is written in French" correctly (it thinks it's | written in French), but with gpt-4 you can include in the | prompt to disregard what the text says and focus on the | words and grammar that it uses. | ArenaSource wrote: | > It seems to get distracted pretty easily though. | | That's true, gpt-4 is way more easy to guide with the | system messages and it doesn't forget the instructions as | the conversation goes on. | hellcow wrote: | My experience with GPT-4 has been really disappointing. It | didn't feel like a step up from 3.5. | | As an example, I've been trying to use it to learn Zig since | the official docs are ... spartan. And I've said, "here's my | code, here's the error, what's wrong with it?" and it will go | completely off the rails suggesting fixes that don't do | anything (or are themselves wrong). | | In my case, understanding/fixing the code would have required | GPT-4 to know the difference between allocating on the | stack/heap and the lifetimes of pointers. It never even | approached the right solution. | | I haven't yet gotten it to help me in even a single instance. | Every suggestion is wrong or won't compile, and it can't | reason through the errors iteratively to find a fix. I'm sure | this has to do with a small sample of Zig code in its | training set, but I reckon an expert C coder could have | spotted the bug instantly. | NicoJuicy wrote: | It can't learn zig without plenty of samples | VectorLock wrote: | GPT-4 is just regurgitating what its "learned" from | previously scraped content on the Internet. If somebody | didn't answer it on StackOverflow before 2021, it doesn't | know it. It can't reason able anything, it doesn't | "understand" stacks or pointers. | | That said its really good at regurgitating stuff from | StackOverflow. But once you step beyond anything that | someone has previously done and posted to the Internet, it | quickly gets out of its depth. | gamegoblin wrote: | 1. GPT4 is learning from the same spartan docs as you, | likely | | 2. GPT4's training data likely doesn't include significant | Zig use, since large parts of its training data cut off a | few years ago. I use Rust and it doesn't know about any | recently added Rust features, either. | | This has interesting implications because it means people | will gravitate towards languages/frameworks/libraries that | GPT knows well, which means even less training data will be | generated for the new stuff. This is a form of value lock- | in. | seu wrote: | > This has interesting implications because it means | people will gravitate towards | languages/frameworks/libraries that GPT knows well, which | means even less training data will be generated for the | new stuff. This is a form of value lock-in. | | That's the kind of problem that most people are just | failing to see. The usage of this models might not in | itself be problematic, but the changes that it bring are | often unexpected and too deep for us to see clearly now. | And yet, people are rushing towards them at full speed. | ignoramous wrote: | It's inevitable, really. But that's like saying Washing | Machine changed fashion. It might have, but the changes | aren't all that abominable, either. | dragonwriter wrote: | If you are using GPT-4 to try to deal with the fact that | technical documentation on the public internet is sparse | for your topic of interest, you are likely to be | disappointed, since GPT-4's training set likely has the | same problem, so you are, in effect, hoping it will fill in | gaps in missing data, prompting hallucinations. | | It'll be much better on subjects where there is _too much_ | information on the public internet for a person to | efficiently manage and sift through. | hellcow wrote: | I think you're right. My hope was that it could reason | through the problem using knowledge from related sources | like C and an understanding below the syntax of what was | actually happening. | | But it most certainly did not. | refulgentis wrote: | Depending on what you're doing, you might find few-shot | techniques useful. | | I used GPT 3.0 to maintain a code library in 4 languages, | I'd write Dart (basically JS, so GPT knows it well), then | give it a C++ equivalent of a function I had previously | translated, and it could do any C++ from there. | roflyear wrote: | It's a step up by an order of magnitude for certain things. | Like chess. It is really good at chess actually. But not | programming. Seems maybe marginally better on average. | Worse in some ways. | robbintt wrote: | What is the aws cli stuff? I was thinking about writing a | terraform agent tool. | jcims wrote: | You install and configure the CLI to run locally, then ask it | to do something. For example, ask it to create a website | using s3 static website feature. It creates the bucket, | creates the content, uploads the content, configures the | bucket static website features and configures the permissions | on the bucket and content. | | I just started tinkering with terraform, which it seems to | understand fairly well. | antibasilisk wrote: | That pastebin is mindboggling. | badloginagain wrote: | I'm glad our AI overlords are as bamboozled by python vs. | python3 as us lowly humans | roflyear wrote: | How so? | antibasilisk wrote: | it worked through a software problem and came to a | conclusion based on the computer's feedback | flangola7 wrote: | Wait until it's directed to hack into power grids! | px43 wrote: | Can you share the code for llm.py? | jcims wrote: | #!/home/ubuntu/venv/bin/python3.10 from | langchain.agents import load_tools from | langchain.agents import initialize_agent from | langchain.chat_models import ChatOpenAI | llm = ChatOpenAI(model='gpt-3.5-turbo',temperature=0) | tools = load_tools(['python_repl', 'requests', 'terminal', | 'wolfram-alpha', 'serpapi', 'wikipedia', 'human', 'pal- | math', 'pal-colored-objects'], llm=llm) | agent = initialize_agent(tools, llm, agent="chat-zero-shot- | react-description", verbose=True) | agent.run("Ask the human what they want to do") | | Note that you'll need to get api keys for openai and serpapi | and a app id from wolfram-alpha. | SCUSKU wrote: | People are joking that they can't wait for the next big | thing in AI to come out in a few weeks, but this seems | pretty big. After fiddling with it for a while, its not | perfect, but this isn't that far from being able to replace | (or at least dramatically change) my job as a software | engineer. | | For example, I asked it to write conway's game of life, and | it took about 4-5 attempts but it wrote fully functional | code that popped up a matplotlib window with a fully | functional simulation. This would've taken me a day at | least. | | I asked it to write a FastAPI backend that uses SQLite for | storing blog Posts, and it struggled with that one a lot | and couldn't quite get it right, although I think that's | largely a limitation of the python REPL from langchain as | opposed to GPT. | | On the one hand I'm excited to build all sorts of new | things and projects with this, but on the other hand I'm | worried my standard of living will decline because my | skills will become super commodified :/ | roflyear wrote: | And you only used the most popular example of getting started | and one of if not the most popular programming languages. | Amazing. | fudged71 wrote: | About how long did this take to run? | | It would be great if it also summarized what the error was, | what was the fix, and how to run the code that it created. | That's all in the output but could be pulled out at the end. | jcims wrote: | A minute or two. | | You can ask it to summarize things if you like. It sometimes | forgets to do so, however. | KrugerDunnings wrote: | I've been playing around with sentence embeddings to search | documents, but I wonder how useful they are as a natural language | interface for a database. The way one might phrase a question | might be very different content wise from how the document | describes the answer. Maybe it might be possible to do some type | of transform where the question is transformed into a possible | answer and then turned into a embedding but I haven't found much | info on that yet. | | Another idea I've had is to "overfit" a generative model like GPT | on a dataset but pay more attention to how url and the like are | tokenised | pstorm wrote: | In your first paragraph, you are describing Hypothetical | Document Embeddings (HyDE) [0]. I've tested it out, and in | certain cases, it works amazingly well to get more complete | answers. | | [0] | https://python.langchain.com/en/latest/modules/chains/index_... | nunodonato wrote: | embeddings are really good at that, you dont need to use | similar words at all. | amitport wrote: | "The way one might phrase a question might be very different | content wise from how the document describes the answer." | | You have late-interaction models, which replace the dot product | with a few transformer layers and are able to learn complex | semantics. | | Of course this would adversely affect latency and embedding | size, so you might want to compress and cache the answers, | hence (shameless plug): | | https://aclanthology.org/2022.acl-long.457/ | yadaeno wrote: | How many embeddings can fit into a single input? | IanCal wrote: | > Maybe it might be possible to do some type of transform where | the question is transformed into a possible answer and then | turned into a embedding but I haven't found much info on that | yet. | | Here you go | https://twitter.com/theseamouse/status/1614453236349693953 | jncraton wrote: | Embeddings can be trained specifically to cause questions and | content including their answers to have similar representations | in latent space. This has been used this to create QA retrieval | systems. Here's one commonly used example: | | https://huggingface.co/sentence-transformers/multi-qa-MiniLM... | visarga wrote: | > The way one might phrase a question might be very different | content wise from how the document describes the answer. | | If the embeddings are worth their salt, then they should not be | influenced by paraphrasing with different words. Try the OpenAI | embeddings or sbert.net embedding models. | summarity wrote: | > might phrase a question might be very different content wise | from how the document describes the answer | | That's what hypothetical embeddings solve: | https://summarity.com/hyde | | There are also encoding schemes for question-answer retrieval | (e.g. ColBERT) | sharemywin wrote: | is there an example what what your talking about? | | Also would you just return a list of likely candidates and loop | over the result set to see if any info is relevant to the | question and then have the the final pass try to answer the | question. | freezed88 wrote: | Making retrieval really really good is part of the mission of | LlamaIndex! Given a natural language input, find the best way to | return a set of documents that is relevant to your LLM use case | (question-answering, summarization, more complex queries too). | | - We integrate with vector db's + ChatGPT Retrieval Plugin | | - Submitted a Retrieval PR to langchain here: | https://github.com/hwchase17/langchain/pull/2014 | | - would love to explore further integrations as a plugin in any | outer agent system | zikohh wrote: | I want to use llamaindex. My input would be a slack export but | I don't want any data to go to openai I want it all to happen | locally or within my own EC2 instance. I have seen | https://github.com/jerryjliu/llama_index/blob/046183303da416... | but it calls hugging face. | | My plan was to use https://github.com/cocktailpeanut/dalai with | the alpaca model then somehow use llamaindex to input my | dataset - a slack export. But it's not too clear how to train | the alpaca model. | yadaeno wrote: | In the back of my head im thinking about how you could make a | stock portfolio analysis chatbot. I think you would want to | vectorize a set of documents containing summarized historical + a | few documents containing recent data. When asked to analyze a | particular portfolio, the portfolio, along with the short term + | long term vectors are passed into the LLM. Im not sure if this is | the ideal approach though. ___________________________________________________________________ (page generated 2023-03-27 23:00 UTC)