美文网首页
langchain的基本架构和设计

langchain的基本架构和设计

作者: 刺客小流_V | 来源:发表于2024-06-29 10:00 被阅读0次

    1 langchian的基本架构

    github:
    langchain-ai/langchain: 🦜🔗 Build context-aware reasoning applications (github.com)

    image.png

    2 langchain的例子

    2.1 Build a Simple LLM Application with LCEL

    本地使用ollama。

    from langchain.prompts import PromptTemplate
    from langchain.chains import LLMChain
    from langchain.llms import Ollama
    
    prompt_template = "请给制作 {product} 的公司起个名字,只回答公司名即可"
    
    ollama_llm = Ollama(model="gemma2")
    llm_chain = LLMChain(
        llm = ollama_llm,
        prompt = PromptTemplate.from_template(prompt_template)
    )
    print(llm_chain("给用户的私人股票投资app"))
    

    2.2 ollma & Perplexica (AI搜索引擎)

    关键信息

    🚀 Perplexica 是对 Perplexity 的一种革命性替代方案,提供了一个免费和开源的解决方案,用于互联网搜索。

    🔒 使用 Perplexica ,您可以享受私密和安全的搜索体验,不必担心您的数据被出售给第三方公司。

    🤖 Perplexica 通过 Ollama 使用本地 LLMs,让您可以根据具体的使用场景选择最佳选项。

    📊 平台提供六种焦点模式,包括全模式、写作助手模式、学术搜索模式、YouTube 搜索模式、Wolfram Alpha 搜索模式和 Reddit 搜索模式。

    🎯 Perplexica 是完全可定制的,允许您根据自己的需求和偏好进行调整。

    💻 您可以使用 Docker 或不使用 Docker 来安装 Perplexica ,便于您开始使用。

    📈 Perplexica 还是一个相对较新的项目,但其活跃的 GitHub 社区正在快速推进更改以解决任何出现的问题。

    📁 Perplexica 不仅限于搜索网络,还可以让您搜索本地文件,并构建自己的 AI 驱动应用程序。

    架构
    Perplexica 的架构包括以下关键组件:

    1. 用户界面 :一个基于 Web 的界面,允许用户与 Perplexica 进行交互,搜索图像、视频等。

    2. Agent/Chains :这些组件预测 Perplexica 的下一步操作,理解用户查询,并决定是否需要进行网络搜索。

    3. SearXNG :Perplexica 使用的元数据搜索引擎,用于在网络上搜索来源。

    4. LLMs(大型语言模型) :由代理和链使用,用于理解内容、撰写响应并引用来源。例如 Claude、GPT 等。

    5. 嵌入模型 :为了提高搜索结果的准确性,嵌入模型使用诸如余弦相似度和点积距离等相似性搜索算法对结果进行重新排序。

    使用Docker安装

    1. 确保 Docker 已安装并在您的系统上运行。

    2. 克隆 Perplexica 存储库:

    git clone https://github.com/ItzCrazyKns/Perplexica.git

    1. 克隆后,转到包含项目文件的目录。

    2. 将 sample.config.toml 文件重命名为 config.toml 。对于 Docker 设置,您只需填写以下字段:

    • OPENAI :您的 OpenAI API 密钥。 如果您希望使用 OpenAI 的模型,则只需填写此项

    • OLLAMA :您的 Ollama API URL。您应该输入为 http://host.docker.internal:PORT_NUMBER 。如果您在端口11434上安装了 Ollama,请使用 http://host.docker.internal:11434 。对于其他端口,请相应调整。 如果您希望使用 Ollama 的模型而不是 OpenAI 的模型,则需要填写此项

    • GROQ :您的 Groq API 密钥。 如果您希望使用 Groq 的托管模型,则只需填写此项 注意 :您可以在从设置对话框启动 Perplexica 后更改这些设置。

    • SIMILARITY_MEASURE :要使用的相似度测量(默认已填充;如果对此不确定,可以将其保留为默认值)。

    1. 确保您位于包含 docker-compose.yaml 文件的目录中,并执行:

    docker compose up -d

    1. 等待几分钟以完成设置。您可以在 Web 浏览器中访问 http://localhost:3000 来访问 Perplexica。

    2.3 langchain ollama RAG

    pip install weaviate-client --break-system-packages

    
    from langchain.prompts import ChatPromptTemplate
    from langchain.schema.output_parser import StrOutputParser
    from langchain.schema.runnable import RunnablePassthrough
    from langchain.text_splitter import CharacterTextSplitter
    from langchain_community.chat_models import ChatOllama
    from langchain_community.vectorstores import Weaviate
    from langchain_community.document_loaders import TextLoader
    from langchain_community.embeddings import OllamaEmbeddings
    from weaviate.embedded import EmbeddedOptions
    import requests
    import weaviate
    
    loader = TextLoader('README.md')
    documents = loader.load()
    
    # Document segmentation
    text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    chunks = text_splitter.split_documents(documents)
    
    client = weaviate.Client(
      url = "http://localhost:8080"
    )
    #V4 client connection, which didn't work here.
    #client = weaviate.connect_to_local()
    print("started doc embedding")
    vectorstore = Weaviate.from_documents(
        client=client,
        documents=chunks,
        embedding=OllamaEmbeddings(model="llama3"),
        by_text=False
    )
    
    # Retrive part
    retriever = vectorstore.as_retriever()
    # LLM prompt template
    template = """You are an assistant for question-answering tasks.
       Use the following pieces of retrieved context to answer the question.
       If you don't know the answer, just say that you don't know.
       Use three sentences maximum and keep the answer concise.
       Question: {question}
       Context: {context}
       Answer:
       """
    prompt = ChatPromptTemplate.from_template(template)
    
    llm = ChatOllama(model="llama3", temperature=10)
    rag_chain = (
            {"context": retriever, "question": RunnablePassthrough()}
            | prompt
            | llm
            | StrOutputParser()
    )
    query = "## 贡献中描述了什么?"
    print(rag_chain.invoke(query))
    
    

    为了连续追问,启动时:python -i index.py

    继续提问:

    query = "工业界推荐有哪些?"
    print(rag_chain.invoke(query))

    相关文章

      网友评论

          本文标题:langchain的基本架构和设计

          本文链接:https://www.haomeiwen.com/subject/alhucjtx.html