1、什么是LangChain? LangChain 是一种强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型(LLM)和聊天模型提供支持的应用程序的过程。通过组件、链、提示模板、输出解析器、索引、检索器、聊天消息历史记录和代理等核心概念,开发人员可以创建适合其特定需求的自定义解决方案。在广泛的用例中,LangChain 的适应性和易用性使其成为开发人员的宝贵工具,使他们能够释放语言模型的全部潜力,创建智能的、上下文感知的应用程序。
LangChain就是一个适配层,上层由开发者构建应用,下层对接各种AI、大模型之类。
为了提升构建一个和大型语言模型相关的软件的效率。
协议、标准化。
【13分钟解读LangChain(精译中字)】 https://www.bilibili.com/video/BV14o4y1K7y3/?share_source=copy_web&vd_source=507b050f5ff710165428f63dfb2ce30b
【LangChain + GLM =本地知识库】 https://www.bilibili.com/video/BV1dv4y1J77z/?share_source=copy_web&vd_source=507b050f5ff710165428f63dfb2ce30b
【简直逆天!我居然只花了2小时就掌握了吴恩达教授讲的【LangChain+ChatGLM-6B】LLM应用开发实践!强烈推荐!! 人工智能|深度学习】 https://www.bilibili.com/video/BV1pz4y1e7T9/?share_source=copy_web&vd_source=507b050f5ff710165428f63dfb2ce30b
【吴恩达与LangChain创始人最新课程《LangChain:与你的数据对话》whisper转文本+GPT翻译中文字幕】 https://www.bilibili.com/video/BV148411D7d2/?share_source=copy_web&vd_source=507b050f5ff710165428f63dfb2ce30b
2、核心元素(6大核心) 【1】LLMs and Prompts 关键词、提示、前言
【2】Chains 链式操作:一步操作到两步或者多部操作。
问:你帮我计算 1 + 1 等于多少
问题拆解:①将 1+1人所问的提问转为python代码。 ②执行代码
Chain解决的问题:让自然语言模型去完成自然语言擅长的事情,根据自然语言的输出采取其他不同的操作。
【3】Data Augmented Generation API Core(OpenAI服务等)
【4】Agents 对任务进行分发和管理。调度器。他可以动态的帮我们选择和调用chain或者已有的工具。
【5】Memory 长期记忆,已经在模型内部的已知的知识,而不是通过输入给他。(Prompts为短期记忆)
如果此memory以vector方式或者是embedding的方式存在某个地方,每次运行大语言模型就会读取出,可以认为是长期记忆。
【6】Evaluation 用于衡量文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。
他相比 fine-tuning 最大的优势就是,不用进行训练,并且可以实时添加新的内容,而不用加一次新的内容就训练一次,并且各方面成本要比 fine-tuning 低很多。
3、项目推荐 【1】LangChain接入本地知识库 zhaoqingpu/LangChainTest (github.com)
1 2 3 4 5 6 7 8 9 10 11 12 13 Python:版本大于3.9 LangChain:`pip install langchain` 向量数据库-Chroma:`pip install chromadb` 将袭击需要接入的数据准备好,支持doc、txt、pdf等格式。 Docs ——> Embeddings ——> Chromadb 中文文档要使用中文Embeddings模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 import argparseimport osfrom langchain import PromptTemplatefrom langchain.chains import RetrievalQAfrom langchain.llms import OpenAI, openaifrom dotenv import load_dotenvfrom langchain.embeddings import HuggingFaceEmbeddings, OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom ChatGLM import ChatGLMload_dotenv("config.env" ) embeddings_model_name = os.environ.get("EMBEDDINGS_MODEL_NAME" ) persist_directory = os.environ.get('PERSIST_DIRECTORY' ) target_source_chunks = int (os.environ.get('TARGET_SOURCE_CHUNKS' , 4 )) from constants import CHROMA_SETTINGSif __name__ == '__main__' : embeddings = HuggingFaceEmbeddings(model_name=embeddings_model_name) db = Chroma(persist_directory=persist_directory, embedding_function=embeddings, client_settings=CHROMA_SETTINGS) """ 使用文档查询 print(db.similarity_search("如何增强体质")) """ retriever = db.as_retriever(search_kwargs={"k" : target_source_chunks}) llm = ChatGLM() prompt_template = """基于以下已知信息,简洁和专业的来回答用户的问题。 如果无法从中得到答案,请说 "根据已知信息无法回答该问题" 或 "没有提供足够的相关信息",不允许在答案中添加编造成分,答案请使用中文。 已知内容: {context} 问题: {question}""" promptA = PromptTemplate(template=prompt_template, input_variables=["context" , "question" ]) chain_type_kwargs = {"prompt" : promptA} qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever, chain_type="stuff" , chain_type_kwargs=chain_type_kwargs, return_source_documents=True ) while True : query = input ("\n请输入问题: " ) if query == "exit" : break res = qa(query) answer, docs = res['result' ], res['source_documents' ] print ("\n\n> 问题:" ) print (query) print ("\n> 回答:" ) print (answer) for document in docs: print ("\n> " + document.metadata["source" ] + ":" )
4、资料推荐 liaokongVFX/LangChain-Chinese-Getting-Started-Guide: LangChain 的中文入门教程 (github.com)