微信扫码
与创始人交个朋友
我要投稿
LlamaIndex,它提供数据连接器、索引、查询引擎和应用集成等功能,使得开发者,能够轻松构建和部署基于LLM的应用程序,从而在各种场景下实现更准确、更相关的文本生成和数据处理。
使用llamaindex + minimax,结合本地Obsidian笔记软件的markdown知识库,构建基于本地知识库的LLM应用,搭建过程非常快速。
Obsidian是一款markdown笔记软件,markdown文件完全本地化,完全自主可控。
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 logging
import sys
import langchain
from llama_index.llms.langchain import LangChainLLM
from langchain_community.llms import Minimax
from llama_index.readers.obsidian import ObsidianReader
from llama_index.core import VectorStoreIndex
from langchain_community.embeddings import MiniMaxEmbeddings
langchain.verbose = True
langchain.debug = True
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# Load the model, 填充你自己的key和groupid
MINMAXAPIKEY = ''
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 outputs
query_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+中大型企业
2024-12-17
llamaindex实战-ChatEngine-Context(上下文)模式
2024-12-01
LlamaIndex,让AI唤醒你的数据
2024-11-29
llamaindex实战-Agent-自定义工具函数
2024-11-22
llamaindex实战-Agent-让Agent调用多个工具函数(本地部署)
2024-11-19
llamaindex实战-Workflow:工作流入门(本地部署断网运行)
2024-11-15
llamaindex实战-Agent-在Agent中使用RAG查询(本地部署)
2024-11-07
深度解析 REAcT Agent 的实现:利用 LlamaIndex 和 Gemini 提升智能代理工作流
2024-11-04
手把手教你用Coze零代码搭建一个智能搜索智能体,高时效性、保姆级!
2024-07-09
2024-04-20
2024-06-05
2024-04-25
2024-04-28
2024-05-09
2024-07-20
2024-04-26
2024-06-19
2024-04-08