AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


llamaindex + minimax,10分钟构建基于本地知识库的LLM应用
发布日期:2024-04-19 07:45:52 浏览次数: 2118 来源:牛爷儿


引言

LlamaIndex,它提供数据连接器、索引、查询引擎和应用集成等功能,使得开发者,能够轻松构建和部署基于LLM的应用程序,从而在各种场景下实现更准确、更相关的文本生成和数据处理。


使用llamaindex + minimax,结合本地Obsidian笔记软件的markdown知识库,构建基于本地知识库的LLM应用,搭建过程非常快速。


Obsidian是一款markdown笔记软件,markdown文件完全本地化,完全自主可控。

什么是llamaindex?

LlamaIndex 是一个专为基于大型语言模型(LLM)应用程序设计的数据框架,旨在通过上下文增强来提升应用程序的性能,通常被称为检索增强生成(RAG)系统,它使得开发者,能够更容易地将私有或特定领域的数据集成到LLM中,以实现更准确的文本生成。


LlamaIndex 通过提供一系列必要的抽象概念,帮助开发者轻松地摄取、结构化并访问私有或特定领域的数据,然后将这些数据安全、可靠地注入到LLM中。它支持多种编程语言,包括Python和Typescript,使得开发者可以根据自己的技术栈选择合适的工具。


LlamaIndex 的核心优势在于其对数据的灵活处理能力。它提供了数据连接器,可以摄取来自API、PDF、SQL数据库等多种数据源的数据。此外,LlamaIndex 还内置了数据索引策略,帮助开发者以最适合LLM消费的方式结构化数据。通过查询引擎,开发者可以构建强大的检索接口,以增强知识的输出;通过聊天引擎,可以实现与数据的多轮次、交互式对话。


LlamaIndex 适用于各种用户,无论是初学者还是高级用户。它的高级API允许初学者快速上手,而低级API则为高级用户提供了自定义和扩展模块的灵活性。



此外,LlamaIndex 还与多个生态系统项目紧密集成,如LlamaHub提供了大量自定义数据连接器,SEC Insights 是一个使用LlamaIndex 构建的金融研究应用程序,create-llama 是一个快速搭建LlamaIndex 项目的命令行工具。



废话不多说,来看个完整的代码例子把,不到100行代码,就可以构建属于自己的本地知识库LLM应用。

完整代码

!pip install llama-index-readers-obsidian!pip install llama-inde!pip install langchain langchain-community llama-index-llms-langchain !pip install llama-index-embeddings-langchain

import loggingimport sysimport langchain
from llama_index.llms.langchain import LangChainLLMfrom langchain_community.llms import Minimaxfrom llama_index.readers.obsidian import ObsidianReaderfrom llama_index.core import VectorStoreIndexfrom langchain_community.embeddings import MiniMaxEmbeddings
langchain.verbose = Truelangchain.debug = True
logging.basicConfig(stream=sys.stdout, level=logging.INFO)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# Load the model, 填充你自己的key和groupidMINMAXAPIKEY = ''MINMAXGROUPID = ''llm_minimax = Minimax(minimax_api_key=MINMAXAPIKEY, minimax_group_id=MINMAXGROUPID)
llm = LangChainLLM(llm=llm_minimax)documents = ObsidianReader("./思考决策").load_data()# Returns list of documents

embeddings = MiniMaxEmbeddings(minimax_api_key=MINMAXAPIKEY, minimax_group_id=MINMAXGROUPID)
index = VectorStoreIndex.from_documents(documents, embed_model=embeddings)# Initialize index with documents
# set Logging to DEBUG for more detailed outputsquery_engine = index.as_query_engine(llm=llm)res = query_engine.query("人生的意义是什么?")
----------------------------------------------输出:[llm/start] [1:llm:Minimax] Entering LLM run with input:{"prompts": ["Context information is below.\n---------------------\n你的人生可以被总结成一句什么话?\n这是作家丹尼尔·平克最爱的问题之一,他在其著作《驱动力》(Drive)中表示,这个问题最初是由新闻记者、美国国会女议员克莱尔·布思·卢斯(Clare Booth Luce)提出的。\n\n卢斯曾在约翰·肯尼迪总统执政初期时拜访他,当时卢斯提出肯尼迪总统虽然经常努力做很多事情,但是做事却没有重点,并表示这样下去可能很危险。\n\n她告诉肯尼迪总统:==“一个伟人可以用一句话来总结”——如果一位领导人有着清晰而强烈的目标意识,那么我们用一句话就能总结出他的人生,比如,“亚伯拉罕·林肯保卫美国,解放奴隶”==。\n\n平克认为,这种理念对任何人都适用,而不只是总统。你的人生可能被总结成“他的4个孩子健康、快乐地长大成人”,或者“她发明了一台能让人们的生活变得轻松的设备”。如果你的人生有一个尚未完成的目标,那么你就必须问自己:“我怎样才能不负众望地完成它?”\n\n---\n\n明确目的\n“目标”,是指为了达成“目的”,而给出的一个定性或定量的“指向性水准”。还是以“大型的新产品”为例,“上半年的销售额要达到××亿日元”“两年后要在同行业中,取得市场占有率第一的位子”——像这样的表述就是“目标”。\n\n“目的”,是指“为了达成什么,而去做这件事”。\n\n没有明确目的就开始思考,无异于还没有决定好“目的地”就出发。目的不同,出现的问题和解决对策也会不同。如果我们不事先把目的了解透彻,就没有办法进行思考,也无法得出想要的对策。现实生活中,很多领导者都只给抽象的指示,员工就按照指示工作的例子不胜枚举。\n---------------------\nGiven the context information and not prior knowledge, answer the query.\nQuery: 人生的意义是什么?\nAnswer:"]}[llm/end] [1:llm:Minimax] [3.11s] Exiting LLM run with output:{"generations": [[{"text": "人生的意义因人而异,没有统一的答案。一些人可能认为人生的意义在于追求个人成就和成功,而另一些人可能认为人生的意义在于帮助他人、为社会做贡献。还有的人可能认为人生的意义在于寻找自己的热情和兴趣,不断探索和学习。总的来说,人生的意义在于找到并追求自己认为有价值的事物,实现自己的人生目标。","generation_info": null,"type": "Generation"}]],"llm_output": null,"run": null}





53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询