Mac os 本地搭建 Langchain 基础环境

这篇具有很好参考价值的文章主要介绍了Mac os 本地搭建 Langchain 基础环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、本地所需环境安装

1.1 安装 python

查看本地 python 版本,命令台输入 python -V

建议升级 python 到 3.0 以上,如果已经安装了 Homebrew,直接通过命令brew install python3安装即可(注:该方法会比较慢,如一直在卡在Updating Homebrew...,按control + c 可仅仅取消Homebrew本次更新操作)

安装或更新完成后,控制台会打印出安装所在路径,copy 路径

把安装路径设置环境变量中,输入open ~/.bash_profile打开文件,把安装路径新增到文件中

新增 alias python="/usr/local/bin/python3"(注:路径为各自控制台输出安装路径) 完成后控制台执行保存 source ~/.bash_profile,再次执行python -V发现已经升级了本地 pytho 版本

1.2 安装 pip 包

查看本地 pip 版本,执行命令 pip -V

如果没有安装,执行命令python3 -m pip install --upgrade pip安装 pip 包

然后设置环境变量,执行open ~/.bash_profile,新增export HNSWLIB_NO_NATIVE=1,更新环境source ~/.bash_profile

1.3 安装 langchain&chroma db

直接使用 pip 安装,执行pip install langchain(注:安装比较慢,如遇下载超时情况,重新执行命令即可) 执行pip install chromadb(注:安装比较慢,如遇下载超时情况,重新执行命令即可)

1.4 安装其它环境

直接使用 pip 安装,一般执行pip install xxx,比如安装 openAI,pip install openai

1.5 执行 python 脚本

示例:输入命令pyhton3进入 python 中,依次输入以下命令

 

import chromadb(导包) chroma_client = chromadb.Client()(创建客户端) collection = chroma_client.create_collection(name="my_collection")(设置表名称) collection.add( documents=["This is a document", "This is another document"], metadatas=[{"source": "my_source"}, {"source": "my_source"}], ids=["id1", "id2"] )(执行插入) results = collection.query( query_texts=["This is a query document"], n_results=2 )(设置查询) print(results)(打印查询数据)

退出 python 执行 exit()文章来源地址https://www.toymoban.com/news/detail-812836.html


二、私有知识库 Demo

2.1 保存&查询并持久化到磁盘

      
# 导包
import chromadb
from chromadb.config import Settings

# 保存数据路径
persist_directory = "/Users/baixiaobai/SHUIDI/shuidi/chroma_db"
# 创建启用持久性的新 Chroma 客户端
client = chromadb.Client(
    Settings(
        persist_directory=persist_directory,
        chroma_db_impl="duckdb+parquet",
    )
)

# 重置数据库
client.reset()

# 创建集合
collection_name = "peristed_collection"
collection = client.create_collection(name=collection_name)

# 添加一些数据到集合中
collection.add(
    embeddings=[
        [1.1, 2.3, 3.2],
        [4.5, 6.9, 4.4],
        [1.1, 2.3, 3.2],
        [4.5, 6.9, 4.4],
        [1.1, 2.3, 3.2],
        [4.5, 6.9, 4.4],
        [1.1, 2.3, 3.2],
        [4.5, 6.9, 4.4],
    ],
    metadatas=[
        {"uri": "img1.png", "style": "style1"},
        {"uri": "img2.png", "style": "style2"},
        {"uri": "img3.png", "style": "style1"},
        {"uri": "img4.png", "style": "style1"},
        {"uri": "img5.png", "style": "style1"},
        {"uri": "img6.png", "style": "style1"},
        {"uri": "img7.png", "style": "style1"},
        {"uri": "img8.png", "style": "style1"},
    ],
    documents=["doc1", "doc2", "doc3", "doc4", "doc5", "doc6", "doc7", "doc8"],
    ids=["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8"],
)

# 显示手动调用,保存数据到磁盘
client.persist()

# 使用相同的设置创建一个新客户端
client = chromadb.Client(
    Settings(
        persist_directory=persist_directory,
        chroma_db_impl="duckdb+parquet",
    )
)

# 加载集合
collection = client.get_collection(collection_name)

# 查询集合
results = collection.query(
    query_embeddings=[1.1, 2.2, 3.2],
    n_results=1,
    include=["embeddings", "documents", "metadatas", "distances"]
)

# 打印结果
print(results)

    

2.2 利用 openai 进行 Embeddings 保存数据

      
import chromadb
from chromadb.utils import embedding_functions
client = chromadb.Client()
# Using OpenAI Embeddings. This assumes you have the openai package installed
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
    api_key="*********************************",
    model_name="text-embedding-ada-002"
)
openai_collection = client.create_collection(name="openai_embeddings", embedding_function=openai_ef)
openai_collection.add(
    documents=["This is a document", "This is another document"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)
results = openai_collection.query(
    query_texts=["This is a query document"],
    n_results=2,
    include=["embeddings", "documents", "metadatas", "distances"]
)
print(results)

    

2.3 利用 langchain 框架进行向量数据并查询

      
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
import os
from langchain import PromptTemplate
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import TextLoader
# key
OPENAI_API_KEY = '********'
# 加载文件
loader = TextLoader('/Users/baixiaobai/SHUIDI/shuidi/11.txt')
documents = loader.load()
# 按照句号切块数据
text_splitter = CharacterTextSplitter(chunk_size=20, chunk_overlap=0, separator='。')
split_docs = text_splitter.split_documents(documents)
# 初始请求向量化数据
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
# 持久化文件地址
persist_directory = 'chroma_storage'
# 执行向量化
vectorstore = Chroma.from_documents(split_docs, embeddings, persist_directory=persist_directory)
# 持久化到本地
vectorstore.persist()
# 从本地加载数据
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embeddings)
query = "小黄今天干什么?"
# 查询
docs = vectordb.similarity_search(query,1)
# 创建提示模板
output_parser = CommaSeparatedListOutputParser()
format_instructions = output_parser.get_format_instructions()
prompt = PromptTemplate(
    template="已知信息:{background}。 根据上述已知信息,以客服的语气来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 问题是:{question}",
    input_variables=["question"],
    partial_variables={"background": str(docs[0].page_content)}
)
# 初始化
llm = OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY)
input = prompt.format(question="小黄明天干什么?")
# 调用openai
output = llm(input)
print(output)

    

到了这里,关于Mac os 本地搭建 Langchain 基础环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI】使用阿里云免费服务器搭建Langchain-Chatchat本地知识库

    书接上文,由于家境贫寒的原因,导致我本地的GPU资源无法满足搭建Langchain-Chatchat本地知识库的需求,具体可以看一下这篇文章,于是我只能另辟蹊径,考虑一下能不能白嫖一下云服务器资源,于是去找网上找,您还别说,还真有,具体的领取方法可以查看我的这篇文章:【

    2024年02月03日
    浏览(77)
  • VMware虚拟机搭建 ESXI-8.0环境并且安装Mac OS13系统,

    官方下载地址 下载完成大小如下  打开VMware虚拟机 新建虚拟机     导入镜像,选择下载VMware-VMvisor-Installer-8.0b-21203435.x86_64.iso 开始进行安装  选择整块盘符安装 按回车键 键盘布局默认选择US-Default  设置root密码  按F11 进行安装 安装中(安装速度很快) 安装成功按回车重启

    2024年02月04日
    浏览(51)
  • 在Mac系统下搭建Selenium环境并驱动Chrome浏览器

    本文带领那些使用Mac的童鞋们实现Selenium驱动Chrome浏览器,虽然会有坑,但是我们可以凭借敏捷的身手躲过。下面就开始吧: 安装selenium 打开终端 -pip安装(安装命令:pip3 install selenium) 安装浏览器驱动 ChromeDriver 1. 查看Chrome版本 打开chrome,在设置-关于Chrome 查看Chrome的版本

    2024年02月14日
    浏览(83)
  • 本地部署 langchain-ChatGLM

    一种利用 ChatGLM-6B + langchain 实现的基于本地知识的 ChatGLM 应用。增加 clue-ai/ChatYuan 项目的模型 ClueAI/ChatYuan-large-v2 的支持。 本项目中 Embedding 默认选用的是 GanymedeNil/text2vec-large-chinese,LLM 默认选用的是 ChatGLM-6B。依托上述模型,本项目可实现全部使用开源模型离线私有部署。

    2024年02月06日
    浏览(45)
  • 本地化GPT:LangChain + ChatGLM == 知识本地库

    OpenAI发布的ChatGPT Plugin刚刚杀死了一个创业公司LangChain(刚获得1000万美金种子轮融资) 由于语言模型的输出是通过自回归+采样[可选]完成的,在高精度场景下,即使是超大语言模型,发生错误概率也是指数级的。同时,采样也很容易引入错误。比如地址中的数字门牌号,模型

    2024年02月11日
    浏览(50)
  • Chinese-LangChain:基于ChatGLM-6b+langchain实现本地化知识库检索与智能答案生成

    Chinese-LangChain:中文langchain项目,基于ChatGLM-6b+langchain实现本地化知识库检索与智能答案生成 https://github.com/yanqiangmiffy/Chinese-LangChain 俗称:小必应,Q.Talk,强聊,QiangTalk 🐯 2023/04/19 引入ChuanhuChatGPT皮肤 📱 2023/04/19 增加web search功能,需要确保网络畅通! 📚 2023/04/18 webui增加知

    2024年02月06日
    浏览(58)
  • 使用Langchain与ChatGLM实现本地知识库(二)

      大语言模型也只是将用户提供的大规模数据集训练而来,也并非万能的什么都知道,特别是一些小众知识、内部数据或私密的个人数据等,此时ChatGLM3肯定会胡乱回答就是ChatGPT4也不一定能给出满意回答;不少公司、个人都有自己的知识库或日志等此时如有可将这些数据以

    2024年02月05日
    浏览(55)
  • 使用LangChain与ChatGLM实现本地知识库(一)

      本篇主要内容为介绍ChatGLM3的安装使用,后续才会涉及到使用LangChain实现本地知识库的内容;   ChatGLM为智谱与清华大学开源的一个大语言模型,支持多轮对话、内容创作等,ChatGLM3-6B为ChatGLM3系列中门槛相对较低的一个,本地部署提供兼容OpenAI的API;   LangChain用于快

    2024年02月05日
    浏览(45)
  • 【ChatGLM】基于 ChatGLM-6B + langchain 实现本地化知识库检索与智能答案生成: 中文 LangChain 项目的实现开源工作

      目录 【ChatGLM】基于 ChatGLM-6B + langchain 实现本地化知识库检索与智能答案生成: 中文 LangChain 项目的实现开源工作 1.克隆源代码:

    2024年02月11日
    浏览(46)
  • LangChain入门(四)-构建本地知识库问答机器人

    在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数据库chromadb和tiktoken    其中h

    2024年02月05日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包