Embedding
扼要言之,embedding 的作用即为使高维疏松的语言转变为低维稠密的向量。原理是矩阵的乘法。
Langchain的小demo
运行环境为 Python 3.11.7 本地conda虚拟环境名字langchain

构建了一个简单的对话程
import osfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_openai import ChatOpenAIapi_key = "sk-X6k4gks4hxg7IkmGFLYvEdlB1LNx6IIfISlb9KbcpvEKLkiB"base_url ="https://api.chatanywhere.com.cn"prompt = ChatPromptTemplate.from_messages([("system", "使用中文回答"),("user", "{input}")])llm = ChatOpenAI(api_key=api_key,base_url=base_url)output_parser = StrOutputParser()chain = prompt | llm | output_parserprint(chain.invoke({"input": "你好"}))
基于 web 文档内容实施问答的程序。
这里有一个小问题base_url ="https://api.chatanywhere.com.cn/v1/"这段记得加/v1/
from langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAI,OpenAIEmbeddingsfrom langchain_community.document_loaders import web_basefrom langchain_community.vectorstores import faissfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain.chains.combine_documents import create_stuff_documents_chainfrom langchain_core.documents import Documentfrom langchain.chains import retrievalapi_key = "sk-X6k4gks4hxg7IkmGFLYvEdlB1LNx6IIfISlb9KbcpvEKLkiB"base_url ="https://api.chatanywhere.com.cn/v1/"# 创建embeddings接口embeddings = OpenAIEmbeddings(base_url=base_url,api_key=api_key)# 导入文档loader = web_base.WebBaseLoader("https://docs.smith.langchain.com/user_guide")docs = loader.load()# 构建向量数据库text_splitter = RecursiveCharacterTextSplitter()documents = text_splitter.split_documents(docs)vector = faiss.FAISS.from_documents(documents, embeddings)# 定义模型llm = ChatOpenAI(api_key=api_key,base_url=base_url)# 模板prompt = ChatPromptTemplate.from_template("""Answer the following question based only on the provided context:<context>{context}</context>Question: {input}""")# 构建链document_chain = create_stuff_documents_chain(llm, prompt)retriever = vector.as_retriever()retrieval_chain = retrieval.create_retrieval_chain(retriever, document_chain)# 运行response = retrieval_chain.invoke({"input": "how can langsmith help with testing?"})print(response["answer"])
添加了上下文功能
from langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain_community.document_loaders import web_basefrom langchain_community.vectorstores import faissfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain.chains.combine_documents import create_stuff_documents_chainfrom langchain.chains import retrievalfrom langchain.chains import history_aware_retrieverfrom langchain_core.prompts import MessagesPlaceholderfrom langchain_core.messages import HumanMessage, AIMessageapi_key = "sk-X6k4gks4hxg7IkmGFLYvEdlB1LNx6IIfISlb9KbcpvEKLkiB"base_url = "https://api.chatanywhere.com.cn/v1/"# 创建embeddings接口embeddings = OpenAIEmbeddings(base_url=base_url, api_key=api_key)# 导入文档loader = web_base.WebBaseLoader("https://docs.smith.langchain.com/user_guide")docs = loader.load()# 构建向量数据库text_splitter = RecursiveCharacterTextSplitter()documents = text_splitter.split_documents(docs)vector = faiss.FAISS.from_documents(documents, embeddings)# 定义模型llm = ChatOpenAI(api_key=api_key, base_url=base_url)# 模板prompt = ChatPromptTemplate.from_messages([("system", "Answer the user's questions based on the below context:\n\n{context}"),MessagesPlaceholder(variable_name="chat_history"),("user", "{input}"),])# 构建链retriever = vector.as_retriever()retriever_chain = history_aware_retriever.create_history_aware_retriever(llm, retriever, prompt)document_chain = create_stuff_documents_chain(llm, prompt)retrieval_chain =retrieval.create_retrieval_chain(retriever_chain, document_chain)# 运行chat_history = [HumanMessage(content="LangSmith能帮助测试我的LLM应用程序吗?使用中文回答"), AIMessage(content="好的!")]response =retrieval_chain.invoke({"context":retriever,"chat_history": chat_history,"input": "告诉我怎么做"})print(response["answer"])
CNN
官方文档
https://python.langchain.com/docs/get_started/quickstart/#agent
【卷积神经网络】8分钟搞懂CNN,动画讲解喜闻乐见_哔哩哔哩_bilibili
CNN(Convolutional neural network 输入层 各种数字信息- 卷积层 概括特征
- 池化层 进一步扩大特征
- 全连接层 对前面的特征进行汇总,进行最终的判断
