【RAG知识库】如何在LlamaIndex中使用RAG?

LlamaIndex——RAG概述 目前,以下组件是 Transformation 对象:文本分割器、节点解析器、元数据提取器、Embeddingsmodel(查看我们支持的嵌入列表)。除了这些模块,我们可以自定义转换操作,例如import re], 阅读详情

img

什么是 Llama-Index

LlamaIndex 是一个数据框架,用于帮助基于 LLM 的应用程序摄取、构建结构和访问私有或特定领域的数据。

如何使用 Llama-Index ?

基本用法是一个五步流程,将我们从原始、非结构化数据导向基于该数据生成内容的LLM。

    1. 加载文档
    1. 解析文档到 LlamaIndex 的 Node 节点中
    1. 构建索引
    1. 解析索引
    1. 解析响应

安装需要的依赖包

 !pip install llama-index -qU
 !pip install -q openai
 !pip install pypdf
 !pip install doc2txt
 !pip install -qU llama-cpp-python
 !pip install transformers
 !pip install accelerate

导入需要的依赖

 import os
 import openai
 from getpass import getpass
 #
 import logging
 import sys
 from pprint import pprint
 #
 logging.basicConfig(stream=sys.stdout, level=logging.INFO)
 logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
 #
 from llama_index import(VectorStoreIndex,
                         SimpleDirectoryReader,
                         load_index_from_storage,
                         StorageContext,
                         ServiceContext,
                         Document)
 ​
 from llama_index.llms import OpenAI,HuggingFaceLLM
 from llama_index.prompts import PromptTemplate
 from llama_index.text_splitter import SentenceSplitter
 from llama_index.embeddings import OpenAIEmbedding,HuggingFaceEmbedding
 from llama_index.schema import MetadataMode
 from llama_index.postprocessor import MetadataReplacementPostProcessor

什么是 Document?

Document是一个容器,用来保存来自各种来源的数据,比如PDF、API 输出或从数据库中检索到的数据。

 documents = SimpleDirectoryReader('./Data/').load_data()
 print(len(documents))
 pprint(documents)

加载完成后,这个 pdf 被转换为长度为 12 的数组.

 documents[0].get_content()
 ​
 ## Response
 Face Recognition System Using Python
  This article was published as a part of the Data Science Blogathon.
 Introduction
 Face recognition is different from face detection. In face detection, we had only detected the location of
 human faces, and we recognized the identity of faces in the face recognition task.
 In this article, we are going to build a face recognition system using python with the help of face
 recognition library .
 There are many algorithms available in the market for face recognition. This broad computer vision
 challenge is detecting faces from videos and pictures. Many applications can be built on top of recognition
 systems. Many big companies are adopting recognition systems for their security and authentication
 purposes.
 Use Cases of Recognition Systems
 Face recognition systems are widely used in the modern era, and many new innovative systems are built on
 top of recognition systems.
 There are a few used cases :
 Finding Missing Person
 Identifying accounts on social media
 Recognizing Drivers in Cars
 School Attendance System
 Several methods and algorithms implement facial recognition systems depending on the performance and
 accuracy.
 Traditional Face Recognition Algorithm
 Traditional face recognition algorithms don’t meet modern-day’s facial recognition standards. They were
 designed to recognize faces using old conventional algorithms.
 OpenCV provides some traditional facial Recognition Algorithms.
 Eigenfaces
 Scale Invariant Feature Transform (SIFT)
 Fisher faces
 Local Binary Patterns Histograms (LBPH)
 COMPUTER VISION
 IMAGE ANALYSIS
 INTERMEDIATE
 PYTHON
 documents[0].metadata
 ​
 ## 响应
 {'file_path': 'Data/chinahistory.txt',
  'file_name': 'chinahistory.txt',
  'file_type': 'text/plain',
  'file_size': 977274,
  'creation_date': '2023-12-18',
  'last_modified_date': '2023-12-05',
  'last_accessed_date': '2023-12-18'}

设置 llm

 from llama_index.llms import HuggingFaceLLM
 from llama_index.prompts import PromptTemplate
 llm = HuggingFaceLLM(
     model_name="HuggingFaceH4/zephyr-7b-beta",
     tokenizer_name="HuggingFaceH4/zephyr-7b-beta",
     #query_wrapper_prompt=PromptTemplate("<|system|>Please check if the following pieces of context has any mention of the keywords provided in the question.If not ten say that you do not know the answer.Please do not make up your own answer.</s>\n<|user|>\nQuestion:{query_str}</s>\n<|assistant|>\n"),
     # query_wrapper_prompt=PromptTemplate(template),
     context_window=4096,
     max_new_tokens=512,
     model_kwargs={'trust_remote_code':True},
     generate_kwargs={"temperature": 0.0},
     device_map="auto",)

配置 embedding Model

 from llama_index.embeddings import resolve_embed_model
 from llama_index.embeddings.huggingface import HuggingFaceEmbedding
 #embed_model = resolve_embed_model("local:BAAI/bge-large-en-v1.5")
 embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-en-v1.5")

在LlamaIndex中 Node 是什么

LlamaIndex 中的 Node 对象表示源文档的“块”或部分。

这可能是一个文本块、一幅图像或其他类型的数据。类似于 Documents,Nodes 也包含与其他节点的元数据和关系信息。

在 LlamaIndex 中,Nodes 被认为是一等公民。

这意味着可以直接定义 Nodes 及其所有属性。

或者也可以使用 NodeParser 类将源Document解析为Node。默认情况下,从文档派生的每个节点都会继承相同的元数据。例如,文档中的file_name字段会传播到每个节点。

视特定的使用情况和数据结构,选择将整个 Document 对象发送到索引还是在索引之前将 Document 转换为 Node 对象取决于自己。

  1. 将整个Document对象发送至索引:这种方法适用于将整个文档作为单个单位进行维护。当您的文档相对较短或不同部分之间的上下文重要时这可能会更好。
  2. 在索引之前将Document转换为Node对象:当的文档很长且希望在索引之前将其拆分成较小块(或节点)时,这种方法很实用。当想要检索文档特定部分而非整个文档时这可能会更好。

节点解析和索引化(基于句子窗口方法)

SentenceWindowNodeParser 类旨在将文档解析为节点(句子),并为每个节点捕获周围句子的窗口。

这对于上下文感知的文本处理非常有用,通过理解句子周围的背景可以提供有价值的见解。

  • Node:表示文本的单元,这里指一句话。
  • Window:围绕特定句子的若干句组成的范围。例如,如果窗口大小为3,并且当前句是第5句,则该窗口会捕获第2至第8句。
  • Metadata:与节点相关联的额外信息,如周围句子的窗口。

工作机制

当我们使用from_defaults方法创建一个SentenceWindowNodeParser实例时,使用了 custom_sentence_splitter(根据 "\n", "\n-", 或 "\n" 分隔文本)以及指定的参数(window_size=3, include_prev_next_rel=True, include_metadata=True),我们将设置一个解析器来按照以下方式处理文档:

  • 每个文档的文本将使用自定义分隔符分为句子。
  • 对于每个句子,生成一个节点。
  • 该节点将包含捕获其两侧三个句子的元数据。
  • 此外,每个节点还会引用其前后的句子。
  • 使用一个文档列表调用 get_nodes_from_documents 将返回一组这些节点,每个代表一个句子,丰富了指定的元数据和关系。
 #create senetence window node parser with default settings
 from llama_index.node_parser import SentenceWindowNodeParser,SimpleNodeParser
 sentence_node_parser = SentenceWindowNodeParser.from_defaults(
     window_size=3,
     window_metadata_key="window",
     original_text_metadata_key="original_text")
 #base_node_parser = SentenceSplitter(llm=llm)
 base_node_parser = SimpleNodeParser()
 #
 nodes = sentence_node_parser.get_nodes_from_documents(documents)
 base_nodes = base_node_parser.get_nodes_from_documents(documents)
 #
 print(f"SENTENCE NODES :\n {nodes[10]}")
 print(f"BASE NODES :\n {base_nodes[10]}")
 SENTENCE NODES :
  Node ID: 8418b939-dc08-42a6-8ee1-821e46f7a2a1
 Text: Traditional Face Recognition Algorithm Traditional face
 recognition algorithms don’t meet modern-day’s facial recognition
 standards.
 BASE NODES :
  Node ID: 7a94495b-2f49-4cc4-8fd4-87f5fb0f645e
 Text: Now let’s test the model prediction using text in different
 languages. def predict(text): x = cv.transform([text]).toarray() #
 converting text to bag of words model (Vector) lang = model.predict(x)
 # predicting the language lang = le.inverse_transform(lang) # finding
 the language corresponding the the predicted value print("The langauge
 is in",l...
 dict(nodes[10]) # 由于没有执行索引操作,因此embedding为 None。
 ​
 #### 
 {'id_': '8418b939-dc08-42a6-8ee1-821e46f7a2a1',
  'embedding': None,
  'metadata': {'window': 'Many big companies are adopting recognition systems for their security and authentication\npurposes.\n Use Cases of Recognition Systems\nFace recognition systems are widely used in the modern era, and many new innovative systems are built on\ntop of recognition systems.\n There are a few used cases :\nFinding Missing Person\nIdentifying accounts on social media\nRecognizing Drivers in Cars\nSchool Attendance System\nSeveral methods and algorithms implement facial recognition systems depending on the performance and\naccuracy.\n Traditional Face Recognition Algorithm\nTraditional face recognition algorithms don’t meet modern-day’s facial recognition standards.  They were\ndesigned to recognize faces using old conventional algorithms.\n OpenCV provides some traditional facial Recognition Algorithms.\n',
   'original_text': 'Traditional Face Recognition Algorithm\nTraditional face recognition algorithms don’t meet modern-day’s facial recognition standards. ',
   'page_label': '1',
   'file_name': 'face-recognition-system-using-python.pdf',
   'file_path': 'Data/face-recognition-system-using-python.pdf',
   'file_type': 'application/pdf',
   'file_size': 465666,
   'creation_date': '2023-12-21',
   'last_modified_date': '2023-12-21',
   'last_accessed_date': '2023-12-21'},
  'excluded_embed_metadata_keys': ['file_name',
   'file_type',
   'file_size',
   'creation_date',
   'last_modified_date',
   'last_accessed_date',
   'window',
   'original_text'],
  'excluded_llm_metadata_keys': ['file_name',
   'file_type',
   'file_size',
   'creation_date',
   'last_modified_date',
   'last_accessed_date',
   'window',
   '.......'
   }

LlamaIndex 中的 IndexNode 是什么?

IndexNode 是在 LlamaIndex 中使用的节点对象。

它代表了存储在索引中的原始文档块。索引是一种数据结构,允许快速检索与用户查询相关的上下文,这对于“检索增强生成”(RAG)用例至关重要。

从根本上讲,“IndexNode”继承自“TextNode”的属性,意味着它主要代表文本内容。

IndexNode 的区别特征在于其 index_id 属性。这个 index_id 充当一个唯一标识符或对另一个对象的引用,使得节点能够指向系统内的其他实体。

这种引用功能在文本内容之上增加了一层连接性和关联信息。

例如,在递归检索和节点引用的背景下,较小的块(表示为IndexNode对象)可以指向更大的父块。在查询时会检索较小的块,但会跟踪对更大块的引用。 这样可以提供更多合成的背景信息。

LlamaIndex 中的 ServiceContext 是什么?

ServiceContext 是在 LlamaIndex 管道/应用程序的索引和查询阶段中经常使用的资源包。

 ctx_sentence = ServiceContext.from_defaults(
     llm=llm,
     embed_model=embed_model,
     node_parser=nodes)
 # 以上内容已经包含了SentenceWindowNodeParser
 #
 ctx_base = ServiceContext.from_defaults(
     llm=llm,
     embed_model=embed_model,
     node_parser=base_nodes)

LlamaIndex 中的 VectorStoreIndex 是什么?

在 LlamaIndex 中,VectorStoreIndex 是一种索引类型,它使用文本的向量表示以实现有效检索相关上下文。

它构建在 VectorStore 之上,后者是一种存储向量并允许快速最近邻搜索的数据结构。

VectorStoreIndex 接收 IndexNode 对象,这些对象代表了原始文档的块。

它使用一个嵌入模型(在ServiceContext中指定)将这些节点的文本内容转换成向量表示。然后这些向量被存储在VectorStore中。

在查询时,VectorStoreIndex 可以快速检索出针对特定查询最相关的节点。 它通过使用相同的嵌入模型将查询转换为向量,然后在 VectorStore 中执行最近邻搜索来实现这一点。

 sentence_index = VectorStoreIndex(
     nodes,
     service_context=ctx_sentence)
 base_index = VectorStoreIndex(
     base_nodes,
     service_context=ctx_base)

在LlamaIndex中,RetrieverQueryEngine是什么?

LlamaIndex 中的 RetrieverQueryEngine 是一种查询引擎,它使用一个检索器从索引中获取相关的上下文,给定用户查询。

它主要用于和检索器一起工作,比如从 VectorStoreIndex 创建的 VectorStoreRetriever。

RetrieverQueryEngine 接受一个检索器和一个响应合成器作为输入。 检索器负责从索引中获取相关的 IndexNode 对象,而响应合成器则根据检索到的节点和用户查询生成自然语言响应。

LlamaIndex中的 MetadataReplacementPostProcessor是什么?

MetadataReplacementPostProcessor 用于将节点内容替换为节点元数据中的字段。如果元数据中不存在该字段,则节点文本保持不变。与 SentenceWindowNodeParser 结合使用时效果最佳。

 from llama_index.indices.postprocessor import MetadataReplacementPostProcessor
 sentence_query_engine = sentence_index.as_query_engine(
     similarity_top_k=5,
     verbose=True,
     node_postprocessor=[
         MetadataReplacementPostProcessor("window")
         ],
     )
 ​
 #
 base_query_engine = base_index.as_query_engine(
     similarity_top_k=5,
     verbose=True,
     node_postprocessor=[
         MetadataReplacementPostProcessor("window")
         ],
     )

运行查询以获取句子窗口解析器查询引擎

 query ="使用Python检测图像中的人脸的示例代码。"
 response = sentence_query_engine.query(query)
 from IPython.display import display,Markdown
 display(Markdown(f"<b>{response}</b>"))

生成的响应

这里是一个使用Python和OpenCV库来检测图像中人脸的示例代码:

 import cv2
 import numpy as np
 # Load the pre-trained face detection model
 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')# Load the image
 img = cv2.imread('image.jpg')# Convert the image to grayscale
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Detect faces in the grayscale image
 faces = face_cascade.detectMultiScale(gray, 1.2, 5)# Draw a rectangle around each face
 for (x, y, w, h) in faces:
     cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)# Display the image with the detected faces
 cv2.imshow('Face Detection', img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

在这段代码中,我们首先使用OpenCV的**CascadeClassifier函数加载预训练的人脸检测模型。然后加载图像,将其转换为灰度,并将其传递给人脸检测模型的detectMultiScale函数以检测人脸。然后使用OpenCV的rectangle函数在每张人脸周围绘制矩形。最后,我们使用OpenCV的imshow**函数显示带有检测到的人脸的图像。

请确保将haarcascade_frontalface_default.xml替换为您预训练的人脸检测模型的路径。

为基节点分析器运行查询查询引擎

 response = base_query_engine.query(query)
 #
 display(Markdown(f"<b>{response}</b>"))

回复

 import cv2
 import numpy as np
 ​
 img = cv2.imread('image.jpg')
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
 faces = face_cascade.detectMultiScale(gray, 1.2, 5)
 ​
 for (x, y, w, h) in faces:
     cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
 ​
 cv2.imshow('img', img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

此代码使用Haar级联算法在图像中检测面部。haarcascade_frontalface_default.xml文件包含用于面部检测的训练分类器。detectMultiScale()函数用于以一定比例因子和最小邻域尺寸检测图像中的多个面部。然后,使用rectangle()函数在原始图像上将检测到的面部画成矩形。imshow()函数用于显示图像,而waitKey()函数则用于等待按键后关闭窗口。destroyAllWindows()函数可销毁程序执行期间创建的所有窗口。

保存和重新加载 VectorStore

 from google.colab import drive
 drive.mount('/content/drive')

保存至持久存储

 sentence_index.storage_context.persist(persist_dir="location in Gdrive")
 base_index.storage_context.persist(persist_dir="location in Gdrive")

从存储中检索

 # 重建存储
 SC_retrieved_sentence = StorageContext.from_defaults(persist_dir="location in Gdrive")
 SC_retrieved_base = StorageContext.from_defaults(persist_dir="location in Gdrive")

加载索引

 retrieved_sentence_index = load_index_from_storage(
     SC_retrieved_sentence,
     service_context=ctx_sentence)
 retrieved_base_index = load_index_from_storage(
     SC_retrieved_base,
     service_context=ctx_base)

重建查询引擎

 from llama_index.postprocessor import MetadataReplacementPostProcessor
 #
 sentence_query_engine = retrieved_sentence_index.as_query_engine(
   similarity_top_k=5,
   verbose=True,
   node_postprocessor=[MetadataReplacementPostProcessor("window")],
 )
 base_query_engine = retrieved_base_index.as_query_engine(
   similarity_top_k=5,
   verbose=True,
 )

提问问题并得到回应

 base_response = base_query_engine.query(query)
 #
 display(Markdown(f"<b>{base_response}</b>"))

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线 ↓

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容:

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容:

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容:

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容:

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

高级RAG(三):llamaIndex从小到大的检索 LlamaIndex是一个用于连接大语言模型(LLMs)和外部数据源的数据框架,它可以让LLMs访问和利用私有或领域特定的数据。数据连接:支持从本地文件、Notion、Google文档、Slack、Discord等多种数据源读取数据。数据索引:支持构建不同类型的索引结构,如列表索引、向量索引、树形索引、关键词表索引等,以便快速检索和过滤数据。查询接口:支持使用自定义的输入提示(prompt)与LLMs进行交互,以获取知识增强的响应。 阅读详情

相关推荐

RAG框架LlamaIndex核心——各种索引应用分析

LlamaIndex 是一个大型语言模型(LLM)的数据框架,它提供了数据摄取、数据构建、检索和查询接口以及与其他框架集成的工具。LlamaIndex 可以帮助用户轻松地将现有的数据源和格式(如 API、PDF、文档、SQL 等)与 LLM 结合使用。它提供了多种索引类型,如列表索引、向量索引、树索引和关键字表索引,以便更好地组织和检索相关信息。

数据与算法架构提升之路专栏 4693

【RAGFlow】“提示 : 102 Fail to access model(qwen2.5:14b).**ERROR**: [Errno 111] Connection refused” 的解决

出现这个问题,一般是因为我们的RAG搭建在容器里面,如果没有做端口穿透的话,RAG就会尝试访问容器内的11434端口,从而造成访问失败。(这里可以任意修改你喜欢的端口号),冒号前保持为空相当于在所有IPv4和IPv6地址上监听。再次访问Ollama地址,看看是不是可以用了,你也可以用宿主机IP作为访问IP试一下。首先,我们需要更改Ollama的端口监听,使其在所有域名上都生效。首先确认Ollama可以正常访问:127.0.0.1:11434。退出Ollama:右下角Ollama→quit。

LegendNoTitle的博客 2万+

大模型实战基础(四):4. LlamaIndex 外挂知识库 RAG 实践

目标:从0开始学习LLM平台:InternStudio开发机教程:书生大模型实战营提示:以下是基于书生大模型实战营(第四期)——基础岛:浦语+LlamaIndex 外挂知识库 RAG 实践的学习内容正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。

Hyu_1998的博客 1381

LLM之RAG实战(二十二)| LlamaIndex高级检索(一)构建完整基本RAG框架(包括RAG评估)

解决这一问题的一种方法是让较小的块与父块(本例中为原始的100字块)相关,这样LLM将有更多的上下文来作为答案的基础,而不是试图生成自己的幻觉信息。换言之,10个单词的每个较小组块将与100个单词的较大组块相关,并且当给定的较小组块(10个单词组块)被识别为与回答用户问题相关时,父组块(100个单词组组块)将被检索并被发送到LLM。在传统的RAG应用程序中,我们使用相同的数据块来执行搜索检索,并将相同的块传递给LLM,以使用它来合成或生成答案。可以注意到的一件事是,文档在一个块中,让我们将其拆分为多个块。

wshzd的博客 3181

RAGFlow + LlamaIndex 本地知识库RAG增强架构与实现直播智能复盘

该方案已在电商直播、金融路演等场景验证,违规识别准确率>92%,响应延迟<500ms。核心优势在于将传统RAG从。扩展直播话术合规与复盘系统,需构建。,实现了监管要求与技术创新的深度耦合。

qq_34376868的博客 1800

LlamaIndex实战指南:构建私有知识库的RAG全流程

RAG(检索增强生成)是解决大语言模型知识静态化与业务数据动态化矛盾的核心技术路径。其原理在于将私有文档经结构化分块、向量索引与多级检索后,精准供给LLM作为上下文依据,从而规避微调高成本与纯向量搜索语义失准的缺陷。该技术具备低门槛、可解释、易迭代等工程优势,广泛应用于企业内部文档问答、合同智能分析、产品知识助手等场景。本文聚焦LlamaIndex这一专为RAG优化的框架,深入解析其文档路由、混合分块、本地SQLite向量存储及查询引擎定制等关键实践,助力开发者在真实业务中快速落地‘让大模型真正懂你’的能力

weixin_27256197的博客 317

LlamaIndex+InternLM2构建RAG知识库

本文记录了如何使用InternLM2与Llamaindex来构建RAG。

soulverzz的博客 523

用LlamaIndex搭建个人RAG知识库,赋能面试与职业表达

RAG(检索增强生成)是一种将外部知识精准注入大语言模型的技术范式,其核心在于通过向量索引实现语义检索与事实对齐,避免幻觉、突破上下文长度限制,并支持动态更新。相比Prompt工程的模糊引导或微调的高成本,RAG以轻量、可解释、即插即用的方式,成为个人技术资产结构化与可调用的关键路径。在求职面试、技术自述、简历穿透等强事实性场景中,RAG能将散落的项目文档、简历、博客等非结构化内容转化为可检索、可验证、可生成的知识体。本文聚焦LlamaIndex这一专为知识理解与索引优化设计的框架,详解如何构建面向工程师/

weixin_34275734的博客 385

Llamaindex+Ollama 构建RAG私有化知识库

官网LlamaIndex是一个数据框架,它主要用于连接大型语言模型(LLMs)与外部数据源,例如API、PDF文档、SQL数据库等。这个框架的设计目的是为了增强LLM的能力,使其能够理解和生成更准确、更有上下文关联的文本,尤其是在涉及私人数据或特定领域知识的情况下。LlamaIndex通过创建索引结构来组织和访问数据,这样可以更高效地检索相关信息并将其提供给LLM。这些索引可以是列表索引、向量索引、树索引或关键词索引等,具体取决于数据类型和需求。

技术宅男改变世界 1580

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

保姆级教程:给你的Jetson Orin NX换个‘大房子’——新SSD初始化与JetPack 6.x刷机全流程

本文提供Jetson Orin NX存储升级与JetPack 6.x系统部署的完整指南,涵盖SSD选型、分区策略、刷机流程及性能优化技巧。通过实测数据展示如何提升AI模型加载速度33%,并分享温度管理、I/O调度等实战经验,助力开发者突破边缘计算存储瓶颈。

weixin_42715608的博客 157

(构建知识库)LlamaIndex框架+InternLM+RAG 实践——L1G4

介绍了使用LlamaIndex框架与大模型InternLM结合构建RAG知识库的实践。RAG通过外部信息增强模型能力,无需改变模型权重。文章详细描述了在Intern Studio中配置开发环境、安装LlamaIndex及相关依赖、下载Sentence Transformer模型和NLTK资源的步骤。通过对比,展示了RAG技术在提升模型回答能力方面的优势。最后,文章介绍了将LlamaIndex与Streamlit结合部署为Web应用,并提供将其部署到Hugging Face Space的步骤,展示知识库构建

weixin_57253447的博客 994

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1143

基于 LlamaIndex 构建自己的 RAG 知识库

借助RAG技术后,就能获得我们想要的答案了。

weixin_49327289的博客 266

深入MIPI DSI显示技术栈 (三) DSI vs CSI-2:孪生协议的本质差异

MIPI协议中的DSI与CSI-2存在本质差异:DSI为输出导向协议(Host→Display),用于屏幕控制和画面传输;CSI-2为输入导向协议(Sensor→Host),专攻图像采集。二者在包结构、同步机制、物理层优化等方面均有显著区别:DSI支持命令包和BLLP包,CSI-2具备嵌入式数据包;DSI时钟模式以Burst为主,CSI-2支持Continuous模式。典型场景中,二者协同工作(如手机相机预览),需注意时序同步和延迟控制。设计混合系统时,需合理规划虚拟通道和物理层资源,充分发挥这对&quot

GateWorld的博客 2106

华为 S2600T 存储 3 种网络端口(H4/H5/串口)用途解析与故障恢复实战

本文深度解析华为S2600T存储设备的三种关键网络端口(H4/H5/串口)的功能用途与故障恢复方法。通过详细的配置指南和实战案例,帮助管理员掌握管理接口(H4)的日常运维、维护接口(H5)的高级应用以及串口的应急操作,提升存储设备的可靠性和维护效率。

weixin_30899023的博客 336

本地知识库:基于LlamaIndex 与 Qt 构建 RAG

本项目是一个基于检索增强生成技术(RAG)的智能知识库管理系统,深度融合了 Qt 图形化界面与 REST API 服务能力。

qq_42166989的博客 1010

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2253

LlamaIndex入门指南:构建私有知识库的保姆级教程(附完整RAG实现)

在大语言模型(LLM)时代,如何让通用模型理解私有数据并生成精准回答,是开发者面临的核心挑战。(原GPT Index)应运而生,它作为连接LLM与私有数据的桥梁,通过检索增强生成(RAG​技术,将外部知识库、结构化数据与模型的生成能力深度融合,让AI真正“读懂”你的专属信息。官网文档查阅地址其核心价值在于:支持从PDF、数据库、API等100+数据源(如企业文档、医疗报告)提取信息,构建统一索引;通过语义分块与向量化技术,突破LLM的上下文长度限制,实现TB级数据的高效检索;​。

lucassu的博客 9243

(9-2)离线强化学习:离线强化学习的主流方法

本文介绍了三种离线强化学习的主流约束策略优化方法:BCQ、CQL和Fisher-BRC,并通过CartPole环境进行性能比较。BCQ利用生成模型约束动作选择并引入扰动网络;CQL通过正则化Q值抑制对未见状态-动作对的高估;Fisher-BRC使用Fisher散度正则化策略分布。实验结果表明,三种方法各有优势,其中CQL表现最为稳定。文章还指出,为获得更好的性能,需要更大的数据集和更长的训练轮次。这些方法通过限制策略优化范围,有效提高了离线强化学习的稳定性和泛化能力。

码农三叔 1539

倍福--手动加入第三方伺服的配置

客户在没有硬件情况下,希望手动配置硬件,添加第三方驱动器,本文介绍其操作流程 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 操作步骤 3 2.1. 添加电机XML文件 3 2.2. 创建EtherCAT 3 2.3. 添加新建项 3 2.4. 选择型号 4 2.5. 关联NC轴 5 软硬件版本 1.1. 倍福Beckhoff 1.1.1. 控制器硬件 TwinCAT控制制器,PC或者EPC,包括: 嵌入式控制器:CX5020-

weixin_41883890的博客 5325

RAG知识库-LlamaIndex文档切片

在处理文本数据时,我们需要将这些信息转变成向量格式,比如说把1000个文字变成1024维的向量。为了让向量化流程更加精准做,避免内容丢失,我们需要先对文档进行切片,并进行的数据标准化处理。提高向量化质量:通过适当的切片,可以确保每个切片的内容具有一致的格式和上下文。这有助于在转换为向量时保留更多的语义信息,提高向量化表示的质量和准确性。数据处理更高效:处理非常大的文档或长篇文章时,如果不进行切片,处理这些数据将非常耗时且资源密集。文档切片可以将数据分成较小的部分,提高处理速度,并减少内存消耗。

漫漫漫漫的博客 977

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LlamaIndex RAG知识库对话与OCR识别系统搭建

核心目标:隐藏默认的“README按钮”“Chat按钮”等冗余元素,优化界面简洁度。操作步骤在public文件夹创建ui.css文件;写入CSS样式(通过浏览器开发者工具获取元素类名):/* 隐藏README按钮 */important;/* 隐藏Chat按钮 */important;/* 隐藏默认Logo(替换为自定义Logo时使用) */important;/* 隐藏页脚 */important;在中配置CSS路径:[UI]

W3508559248的博客 726

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用 LlamaIndex + ChromaDB搭一个 RAG 知识库

它把"加载→切片→向量化→入库→检索→生成"整条链路标准化了,你只需声明。│ └── 需求与功能说明.md # ⚠️ 会议室预约系统需求(无关,见后文坑)├── build_index.py # ① 离线建库:读文档→切块→向量化→存 Chroma。├── query.py # ② 在线问答:加载索引→检索→LLM 生成(带溯源)两者填错其中一个,要么 400 报错,要么用了错误的向量空间。,剩下的它帮你串起来。

gugu_411的博客 169

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

5步掌握LlamaIndex:让大模型更懂你的数据,轻松构建RAG知识库

LlamaIndex是专业RAG工具,可处理文档、网页等非结构化数据,支持自然语言查询。本文通过代码示例展示如何将大数据集转化为知识库,包括模型配置、文档加载、索引创建和查询引擎构建等步骤。最终实现让大模型更理解用户数据,快速检索所需信息的功能,适合开发者提升AI应用能力。

lvaolan的博客 1107
上一篇: Ollama:一个在本地部署、运行大型语言模型的工具
下一篇: LLAMA3.1 8B 本地部署并配合Obsidian建立本地AI知识管理系统
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值