Langchain 介绍

发布时间: 更新时间: 总字数:2210 阅读时间:5m 作者: IP上海 分享 网址

LangChain 是一个开源框架,用于构建基于大型语言模型(LLM)的应用程序。

介绍

  • LangChain 由 Harrison Chase 于 2022 年 10 月作为开源软件项目推出
  • LLM 是基于大量数据预先训练的大型深度学习模型,可以生成对用户查询的响应,例如回答问题或根据基于文本的提示创建图像
    • 作为一个语言模型集成框架,LangChain 的用例与一般语言模型的用例有很大的重叠
    • 重叠范围包括文档分析和总结摘要,代码分析和聊天机器人
  • LangChain 提供了一个标准接口,用于将不同的语言模型连接在一起,以及与其他工具和数据源的集成

作用

  • 重新利用语言模型:借助 LangChain,组织可以重新将 LLM 用于特定领域的应用程序,而无需重新训练或微调
  • 简化人工智能开发:LangChain 通过对数据来源集成和提示细化的复杂性进行抽象,来简化人工智能(AI)的开发

安装

pip install langchain

使用示例

检索向量数据库

import os

from langchain.text_splitter import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Chroma

# 加载文档,摘自 https://github.com/limchiahooi/nlp-chinese/blob/master/%E8%A5%BF%E6%B8%B8%E8%AE%B0.txt#L8-L12
raw_documents = TextLoader('/Users/xiexianbin/workspace/code/github.com/xiexianbin/note/static/code/ai/usage/langchain/xiyouji.log', encoding='utf-8').load()

# 分割文档
# chunk_size=400 表示每次读取或写入数据时,数据的大小为 400 个字节, 约200~400个汉字
# chunk_overlap=10 表示两个 chunk 重复的数据大小为 10,防止丢失上小文
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=10)
documents = text_splitter.split_documents(raw_documents)
print("documents nums:", documents.__len__())

# 生成向量(embedding)
# from langchain_community.embeddings import ModelScopeEmbeddings
# os.environ["CUDA_VISIBLE_DEVICES"]=""
# embeddings = ModelScopeEmbeddings(model_id="damo/nlp_corom_sentence-embedding_english-base", model_revision="v1.0.0")
# vectordb = Chroma.from_documents(documents, embedding=embeddings)
# https://help.aliyun.com/zh/model-studio/developer-reference/use-bailian-in-langchain
# from langchain_openai import OpenAIEmbeddings
# os.environ["OPENAI_API_BASE"] = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
# os.environ["OPENAI_API_KEY"] = 'sk-xxxxxx'
# embedding = OpenAIEmbeddings(model="text-embedding-v3")
from langchain_community.embeddings import DashScopeEmbeddings
# os.environ["DASHSCOPE_API_KEY"]=''
embedding = DashScopeEmbeddings(model="text-embedding-v3")
vectordb = Chroma.from_documents(documents, embedding)
# vectordb = Chroma(persist_directory=<persist_directory>, embedding_function=embedding)
# vectordb.persist()

# 检索
query = "猴子怎么来的?"
docs = vectordb.similarity_search(query, k=3)

# 打印结果
for doc in docs:
    print("---")
    print("metadata: ", doc.metadata)
    print("page_content: ", doc.page_content)
  • 运行
pip install langchain
pip install langchain-community==0.3.20 langchain_openai tiktoken dashscope
# pip install modelscope datasets==2.16.0 addict pillow simplejson sortedcontainers transformers numpy torch
export DASHSCOPE_API_KEY="sk-xxx"
python3 embedding_demo1.py
  • 输出
$ python3 langchain-chroma-demo1.py
documents nums: 1
Number of requested results 3 is greater than number of elements in index 1, updating n_results = 1
---
metadata:  {'source': '/Users/xiexianbin/workspace/code/github.com/xiexianbin/note/static/code/ai/usage/langchain/xiyouji.log'}
page_content:  盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。历曰:“天气下降,地气上升;天地交合,群物皆生。”至此,天清地爽,阴阳交合。再五千四百岁,正当寅会,生人,生兽,生禽,正谓天地人,三才定位。故曰,人生于寅。
感盘古开辟,三皇治世,五帝定伦,世界之间,遂分为四大部洲:曰东胜神洲,曰西牛贺洲,曰南赡部洲,曰北俱芦洲。这部书单表东胜神洲。海外有一国土,名曰傲来国。国近大海,海中有一座山,唤为花果山。此山乃十洲之祖脉,三岛之来龙,自开清浊而立,鸿蒙判后而成。真个好山!有词赋为证。赋曰:
势镇汪洋,威宁瑶海。势镇汪洋,潮涌银山鱼入穴;威宁瑶海,波翻雪浪蜃离渊。木火方隅高积上,东海之处耸崇巅。丹崖怪石,削壁奇峰。丹崖上,彩凤双鸣;削壁前,麒麟独卧。峰头时听锦鸡鸣,石窟每观龙出入。林中有寿鹿仙狐,树上有灵禽玄鹤。瑶草奇花不谢,青松翠柏长春。仙桃常结果,修竹每留云。一条涧壑藤萝密,四面原堤草色新。正是百川会处擎天柱,万劫无移大地根。那座山,正当顶上,有一块仙石。其石有三丈六尺五寸高,有二丈四尺围圆。三丈六尺五寸高,按周天三百六十五度;二丈四尺围圆,按政历二十四气。上有九窍八孔,按九宫八卦。四面更无树木遮阴,左右倒有芝兰相衬。盖自开辟以来,每受天真地秀,日精月华,感之既久,遂有灵通之意。内育仙胞,一日迸裂,产一石卵,似圆球样大。因见风,化作一个石猴,五官俱备,四肢皆全。便就学爬学走,拜了四方。目运两道金光,射冲斗府。惊动高天上圣大慈仁者玉皇大天尊玄穹高上帝,驾座金阙云宫灵霄宝店,聚集仙卿,见有金光焰焰,即命千里眼、顺风耳开南天门观看。二将果奉旨出门外,看的真,听的明。须臾回报道:“臣奉旨观听金光之处,乃东胜神洲海东傲来小国之界,有一座花果山,山上有一仙石,石产一卵,见风化一石猴,在那里拜四方,眼运金光,射冲斗府。如今服饵水食,金光将潜息矣。”玉帝垂赐恩慈曰:“下方之物,乃天地精华所生,不足为异。”
那猴在山中,却会行走跳跃,食草木,饮涧泉,采山花,觅树果;与狼虫为伴,虎豹为群,獐鹿为友,猕猿为亲;夜宿石崖之下,朝游峰洞之中。真是“山中无甲子,寒尽不知年。”一朝天气炎热,与群猴避暑,都在松阴之下顽耍。你看他一个个:
跳树攀枝,采花觅果;抛弹子,邷么儿;跑沙窝,砌宝塔;赶蜻蜓,扑八蜡;参老天,拜菩萨;扯葛藤,编草帓;捉虱子,咬又掐;理毛衣,剔指甲;挨的挨,擦的擦;推的推,压的压;扯的扯,拉的拉,青松林下任他顽,绿水涧边随洗濯。一群猴子耍了一会,却去那山涧中洗澡。见那股涧水奔流,真个似滚瓜涌溅。古云:“禽有禽言,兽有兽语。”众猴都道:“这股水不知是那里的水。我们今日赶闲无事,顺涧边往上溜头寻看源流,耍子去耶!”喊一声,都拖男挈女,呼弟呼兄,一齐跑来,顺涧爬山,直至源流之处,乃是一股瀑布飞泉。但见那:

参考

  1. https://www.langchain.com/
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数