RAG效果不好怎么办?试试这八大解决方案(含代码)

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置 关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c... 阅读详情

随着自然语言处理(NLP)技术的飞速发展,构建高效的信息检索系统已成为许多企业和开发者的重要需求。LangChain 是一个强大的框架,旨在帮助开发者快速构建和优化基于大型语言模型(LLM)的应用程序。其中检索器是 LangChain 提供的一个核心接口,它可以根据用户的非结构化查询返回相关的文档。每种检索器都有其独特的应用场景和优势,本文将详细介绍 LangChain 中的几种检索器及其应用场景和解决方案,并提供相应的代码示例,帮助开发者将这些技术应用到实际的业务场景中。

img

一、向量存储检索器

向量检索器是一种基于向量空间模型的检索器,它通过计算查询和文档之间的相似度来实现检索。每个文档和查询都会通过嵌入模型(如 OpenAI Embedding)转换为向量表示,然后通过计算向量之间的相似度(如余弦相似度)来判断文档与查询的相关性。

假设你是一家电商平台的开发者,负责开发一个商品搜索功能,帮助用户快速找到相关商品。你可以使用向量存储检索器来实现这一功能,通过计算商品描述与用户查询之间的相似度,精准返回相关的商品信息。

1.1、解决方案
  • 快速搭建信息检索系统,特别是在处理大量非结构化文本数据时。
  • 通过文本嵌入来计算文档之间的相似度,提升检索的准确性和效率。

1.2、工作原理

  • 文本嵌入:将文本数据转换为向量表示(嵌入),通常使用预训练的语言模型(如 OpenAI 的 Embeddings API)。
  • 向量存储:将生成的嵌入存储在高效的向量数据库中,如 FAISS。
  • 相似度搜索:根据用户的查询文本生成查询向量,并在向量存储中查找与查询向量最相似的文档。

在这里插入图片描述

1.3、处理流程

  1. 文本预处理:对输入的文本进行清洗和标准化处理。
  2. 生成嵌入:使用嵌入模型将文本转换为高维向量。
  3. 存储嵌入:将生成的嵌入存储在向量数据库中,每个嵌入对应一个文档。
  4. 查询处理:用户输入查询文本后,同样使用嵌入模型将其转换为查询向量。
  5. 相似度搜索:在向量数据库中查找与查询向量最相似的嵌入,并返回对应的文档。
1.4、应用场景
  • 构建简单的问答系统:例如,企业内部的员工知识库,通过查询获取相关的文档或信息。
  • 搜索引擎:为大规模的文档或商品数据库提供精准的搜索服务。
  • 内容推荐系统:根据用户的历史行为和查询进行个性化推荐。
1.5、示例代码:
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建商品列表(模拟文档)
products = [
    Document(page_content="这款智能手机拥有强大的处理器和高清摄像头。"),
    Document(page_content="这款笔记本电脑轻薄便携,适合商务旅行。"),
    Document(page_content="这款智能手表支持健康监测和消息提醒。")
]

# 创建向量存储
vectorstore = FAISS.from_documents(products, embeddings)

# 查询向量存储
query = "最好的智能手机"
results = vectorstore.similarity_search(query, k=2)

# 打印结果
for doc in results:
    print(doc.page_content)

二、父文档检索器

父文档检索器是一种基于文档层级关系的检索器,它通过检索“父文档”来帮助获取相关信息。通常,在文档库中存在多个“子文档”(如不同部分或不同章节),而父文档则是它们的整体描述或汇总。父文档检索器的核心思想是通过识别父文档,从而获得与其相关的子文档或详细信息。

假设你是一家律师事务所的开发人员,负责开发一个法律文档检索系统,帮助客户快速找到相关的法律条款和案例。在这种情况下,父文档检索器可以帮助你从大规模的法律文档中提取出完整的案例或条款内容,保证返回的信息不会丢失上下文。

2.1、解决方案
  • 当原始文档非常庞大时,可以检索完整的原始文档或较大的信息块,保持信息的上下文和完整性。
  • 避免仅返回文档的部分内容,确保信息完整性。

2.2、工作原理

  • 文档分割:将大文档分割成多个小段落,并为每个段落生成嵌入。
  • 存储嵌入和元数据:存储这些嵌入及其所属的父文档信息(如文档ID)。
  • 相似度搜索:根据查询文本生成查询向量,在向量存储中查找最相似的段落,并返回其父文档。

2.3、处理流程

  1. 文档分割:将长文档分割成多个段落,每个段落作为一个独立的文档单元。
  2. 生成嵌入:使用嵌入模型将每个段落转换为嵌入。
  3. 存储嵌入和元数据:将嵌入及其所属的父文档ID存储在向量数据库中。
  4. 查询处理:用户输入查询文本后,使用嵌入模型将其转换为查询向量。
  5. 相似度搜索:在向量数据库中查找与查询向量最相似的嵌入,并返回对应的父文档。
2.4、应用场景
  • 法律文档检索:在法律行业中,用户经常需要查找一条法律条文的所有相关内容,包括子条款、解释等。
  • 研究报告检索:在科研领域,用户常常需要通过检索找到与特定研究方向相关的多篇论文或报告。
  • 大型文档的信息提取:例如,针对大量的企业文件或合同,检索系统需要返回与查询条件最相关的完整文档。
2.5、示例代码
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import ParentDocumentRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建法律文档列表(模拟文档)
legal_documents = [
    Document(page_content="《公司法》第5条规定了公司设立的条件。",
             metadata={"parent_doc_id": "doc1"}),
    Document(page_content="《公司法》第10条规定了公司董事会的职能。",
             metadata={"parent_doc_id": "doc1"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(legal_documents, embeddings)

# 创建父文档检索器
retriever = ParentDocumentRetriever(vectorstore=vectorstore, docstore=vectorstore.docstore)

# 查询父文档检索器
query = "公司法的设立条件"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)

三、多向量检索器

多向量检索器通过对多个文档的内容进行聚合,从中提取出最具代表性的信息。这种检索器常用于从大量信息中综合和总结出最关键信息。

假设你是金融分析师,正在分析一份公司年度财报。报告中包含了多种类型的信息,如财务数据、公司战略、市场分析等。多向量检索器可以帮助你在检索过程中对不同类型的信息进行分类和加权,从而精准地提取出与你查询最相关的信息。

3.1、解决方案
  • 精确提取特定信息,特别是在文档内部存在多个具有不同重要性的内容时。
  • 在索引阶段对文档的不同方面进行区分,提高检索的精准度。

3.2、工作原理

  • 多嵌入生成:为每个文档生成多个嵌入,每个嵌入代表文档的一个方面(如摘要、关键词等)。
  • 存储嵌入和元数据:存储这些嵌入及其对应的文档信息。
  • 相似度搜索:根据查询文本生成查询向量,在向量存储中查找最相似的嵌入,并返回对应的文档。

3.3、处理流程

  1. 多嵌入生成:为每个文档生成多个嵌入,每个嵌入代表文档的一个方面(如摘要、关键词等)。
  2. 存储嵌入和元数据:将生成的嵌入及其对应的文档信息存储在向量数据库中。
  3. 查询处理:用户输入查询文本后,使用嵌入模型将其转换为查询向量。
  4. 相似度搜索:在向量数据库中查找与查询向量最相似的嵌入,并返回对应的文档。
3.4、应用场景
  • 金融报告分析:分析复杂的财务报表,提取不同类型的信息(如收入、支出、税务等)。
  • 科技文献检索:针对多领域、多种类的文献进行检索,提取特定领域的研究成果。
  • 复杂文档的信息提取:例如,结合不同类型的数据(如文本、图表、财务数据等)进行分析和检索。
3.5、示例代码
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import MultiVectorRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建财务报告文档列表(模拟文档)
reports = [
    Document(page_content="公司2022年净收入达到5亿,市场份额稳步增长。",
             metadata={"category": "financial"}),
    Document(page_content="2022年公司战略重点是拓展海外市场。",
             metadata={"category": "strategy"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(reports, embeddings)

# 创建多向量检索器
retriever = MultiVectorRetriever(vectorstore=vectorstore)

# 查询多向量检索器
query = "2022年财务报告"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)

四、自查询检索器

自查询检索器是一种通过自动生成和执行查询来检索相关文档的智能检索器。不同于传统的通过用户输入查询来检索文档的方式,自查询检索器通过预设规则、模型生成或分析文档内容,自动生成一个查询,并通过该查询检索相关文档。这使得检索过程更加自动化和智能化,适用于需要根据文档内容生成查询条件的场景。

假设你正在开发一个社交媒体监控系统,需要根据不同的元数据(如发布日期、作者等)对用户提交的查询进行处理。自查询检索器可以帮助你解析用户的自然语言查询,并根据查询的元数据筛选相关内容。

4.1、解决方案
  • 用户查询不仅关注文档内容,还可能关注文档的元数据(如时间、作者等)。
  • 通过语言模型转化自然语言查询为具体的检索条件,包括元数据过滤规则。

4.2、工作原理

  • 查询构造:使用语言模型将用户的自然语言查询转化为具体的检索条件。
  • 条件生成:生成的条件包括要搜索的文本内容和元数据过滤规则。
  • 相似度搜索:根据生成的检索条件在向量存储中查找符合条件的文档。

4.3、处理流程

  1. 查询构造:用户输入自然语言查询,使用语言模型将其转化为具体的检索条件。
  2. 条件生成:生成的检索条件包括要搜索的文本内容和元数据过滤规则。
  3. 存储嵌入和元数据:将文档及其元数据存储在向量数据库中。
  4. 相似度搜索:根据生成的检索条件在向量数据库中查找符合条件的文档。
4.4、应用场景
  • 社交媒体分析:分析来自社交平台的用户评论、帖子等内容,并根据元数据(如标签、发布时间等)进行筛选。
  • 用户行为追踪:在电商平台上,根据用户的购买历史、搜索记录等数据进行个性化推荐和查询。
  • 元数据驱动的检索:例如,基于文档的创建者、创建时间、文档类型等元数据进行更精确的检索。

4.5、示例代码

from langchain.retrievers.self_query import SelfQueryRetriever
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains.query_constructor.base import StructuredQueryOutputParser, get_query_constructor_prompt
from langchain.llms import OpenAI

# 初始化嵌入模型和语言模型
embeddings = OpenAIEmbeddings()
llm = OpenAI()

# 创建文档列表(模拟文档)
documents = [
    Document(page_content="作者:张三,发布于2022年1月,内容是关于金融的研究。",
             metadata={"author": "张三", "date": "2022-01-01"}),
    Document(page_content="作者:李四,发布于2022年3月,内容是关于税务的报告。",
             metadata={"author": "李四", "date": "2022-03-01"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(documents, embeddings)

# 创建自查询检索器
retriever = SelfQueryRetriever(
    vectorstore=vectorstore,
    llm=llm,
    output_parser=StructuredQueryOutputParser(query_constructor_prompt=get_query_constructor_prompt())
)

# 查询自查询检索器
query = "关于税务的报告,李四作者"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)

五、关键词匹配检索器(上下文压缩**)**

基于上下文的检索器在检索过程中,考虑到查询和文档的上下文关系,不仅仅依据关键词或向量相似度。它通过捕捉上下文信息来提高检索的准确性和相关性。

假设你是一个内容网站的开发者,需要为用户提供一个快速的新闻检索功能。用户可以通过输入一个关键词,快速找到与该关键词相关的新闻文章。关键词匹配检索器可以高效地根据查询词找到相关的内容,而不需要复杂的模型推理。

5.1、解决方案
  • 高效的查询处理:关键词匹配检索器适用于较为简单、直接的查询任务,能够快速返回匹配的文档。
  • 提供简单、快速的检索功能,避免了复杂模型推理的计算开销。

5.2、工作原理

  • 初步检索:首先使用常规的向量存储检索器获取初步的检索结果。
  • 文档压缩:在初步检索结果中进一步筛选,确保只保留最相关的部分。
  • 相似度计算:使用嵌入模型计算文档片段的相似度,去除无关信息。

在这里插入图片描述

5.3、处理流程

  1. 初步检索:使用常规的向量存储检索器获取初步的检索结果。
  2. 文档压缩:在初步检索结果中进一步筛选,确保只保留最相关的部分。
  3. 相似度计算:使用嵌入模型计算文档片段的相似度,去除无关信息。
  4. 最终结果:返回经过压缩后的最相关文档片段。
5.4、应用场景
  • 文章摘要提取:例如,在新闻聚合网站中,用户可以通过关键词搜索找到相关的新闻报道。
  • 常见问题解答(FAQ)系统:通过关键词匹配,用户可以快速检索到常见问题的答案。
  • 客户服务自动化:客户支持系统可以通过关键词匹配检索到相关问题的解决方案。
5.5、示例代码:
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import KeywordMatcherRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建新闻文档列表(模拟文档)
news_articles = [
    Document(page_content="近日,全球股市下跌,原因是各国经济放缓。",
             metadata={"category": "finance"}),
    Document(page_content="科技行业迎来突破性发展,人工智能成为焦点。",
             metadata={"category": "technology"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(news_articles, embeddings)

# 创建关键词匹配检索器
retriever = KeywordMatcherRetriever(vectorstore=vectorstore)

# 查询关键词匹配检索器
query = "股市"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)

六、基于规则的检索器(例如时间加权)

基于规则的检索器通过用户定义的规则对文档进行筛选。规则可以基于文档的元数据或内容特征,如特定的字段值或内容匹配条件。适用于业务逻辑较为简单、规则明确的检索场景。

假设你是一个法务团队的开发者,正在开发一个合同审查系统。这个系统需要通过设定规则(如合同金额、签约方等),快速筛选出符合要求的合同条款。基于规则的检索器可以帮助你在大量合同中筛选出符合特定规则的文档,并进行自动化审查。

6.1、解决方案
  • 自动化合规检查和合同审查,提高效率。
  • 通过设定明确的规则,筛选出符合条件的文档,减少人工操作的时间和成本。

6.2、工作原理

  • 时间权重:对不同时间的文档赋予不同的权重,较新的文档权重更高,较旧的文档权重逐渐衰减。
  • 相似度搜索:根据查询文本生成查询向量,在加权的向量存储中查找最相似的文档。

6.3、处理流程

  1. 时间权重:为每个文档分配一个时间戳,并根据时间戳计算权重。
  2. 生成嵌入:使用嵌入模型将文档转换为嵌入。
  3. 存储嵌入和时间戳:将生成的嵌入及其时间戳存储在向量数据库中。
  4. 查询处理:用户输入查询文本后,使用嵌入模型将其转换为查询向量。
  5. 相似度搜索:在加权的向量数据库中查找与查询向量最相似的嵌入,并返回对应的文档。
6.4、应用场景
  • 合规检查:例如,在银行系统中,根据合规要求,系统可以检索符合特定条件的文档,如符合反洗钱法规的交易记录。
  • 合同审查:通过规则检索器,自动化检查合同条款是否符合公司政策或法律要求。
  • 招聘信息筛选:基于规则筛选符合特定要求的简历或职位描述。
6.5、示例代码
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import RuleBasedRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建合同文档列表(模拟文档)
contracts = [
    Document(page_content="合同1:金额100万,签约方甲方是公司A。",
             metadata={"contract_value": "100万", "party": "公司A"}),
    Document(page_content="合同2:金额50万,签约方甲方是公司B。",
             metadata={"contract_value": "50万", "party": "公司B"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(contracts, embeddings)

# 定义筛选规则:金额大于等于100万,甲方是公司A
def filter_rule(doc):
    return doc.metadata['contract_value'] == "100万" and doc.metadata['party'] == "公司A"

# 创建基于规则的检索器
retriever = RuleBasedRetriever(vectorstore=vectorstore, filter_func=filter_rule)

# 查询基于规则的检索器
query = "金额100万,甲方公司A"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)
    

七、层级检索器

层级检索器是对文档的内容进行分层结构化管理的检索器。它通过对文档进行分类和组织,能够根据不同层级进行检索。例如,可以按项目阶段、文档类型等不同维度进行检索。

假设你是一家建筑公司的项目经理,负责一个大型工程项目的管理。你需要检索项目的不同阶段文档(如设计阶段、施工阶段等)。层级检索器可以帮助你通过设置层级关系,将项目分为不同的阶段,并根据阶段进行精准的文档检索。

7.1、解决方案
  • 处理带有明确层级关系的文档,帮助用户快速查找到所需的具体文档或信息。
  • 在多层级的文档管理系统中,提高检索效率,避免检索混乱。

7.2、工作原理

  • 子查询生成:从初始查询出发,生成多个相关的子查询。
  • 多检索:分别检索每个子查询的结果。
  • 结果综合:综合所有子查询的结果,返回最相关的文档。

7.3、处理流程

  1. 子查询生成:从用户的初始查询出发,使用语言模型生成多个相关的子查询。
  2. 多检索:分别使用每个子查询在向量存储中进行检索。
  3. 结果综合:综合所有子查询的结果,根据相似度评分返回最相关的文档。
7.4、应用场景
  • 文档管理系统:在企业的文档管理系统中,层级检索器可以根据文档的类别或子类别进行精确检索。
  • 项目管理:在项目管理工具中,通过层级检索可以精确找到项目中的子任务、报告或文档。
  • FAQ 系统:通过层级结构来管理问题和答案,用户可以按问题类别检索。
7.5、示例代码
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import HierarchicalRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建项目阶段文档列表(模拟文档)
project_documents = [
    Document(page_content="设计阶段文档:项目规划和设计图纸。",
             metadata={"phase": "设计"}),
    Document(page_content="施工阶段文档:施工进度报告。",
             metadata={"phase": "施工"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(project_documents, embeddings)

# 创建层级检索器
retriever = HierarchicalRetriever(vectorstore=vectorstore, hierarchy_field="phase")

# 查询层级检索器
query = "设计阶段文档"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)
    

八、基于图谱的检索器(集成检索器)

图谱检索器使用图谱数据结构来进行信息检索。文档与文档之间、文档与查询之间的关系通过图的结构来表示。通过图的连接,检索器可以高效地发现和利用文档之间的相关性。

假设你在开发一个医学信息检索系统,用户可以根据症状或疾病查询相关的药物和治疗方法。通过构建一个包含疾病、症状和药物之间关系的图谱,你可以使用图谱检索器来快速定位相关的医学信息,并给出精确的查询结果。

8.1、解决方案
  • 通过关系和结构化数据提供更为精准的检索。
  • 适用于知识图谱的场景,在复杂的知识库中提取有价值的信息。

8.2、工作原理

  • 多检索器组合:结合多个检索器的优点,采用混合搜索的方式。
  • 多策略检索:可以同时使用关键词匹配和语义相似度等多种策略。
  • 结果综合:根据查询文本,从多个检索器中获取结果,并综合所有结果。

8.3、处理流程

  1. 多检索器组合:结合多个检索器的优点,如向量存储检索器、父文档检索器等。
  2. 多策略检索:可以同时使用关键词匹配和语义相似度等多种策略。
  3. 结果综合:根据查询文本,从多个检索器中获取结果,并综合所有结果,返回最相关的文档。
8.4、应用场景
  • 知识图谱构建:在企业中,通过知识图谱整合不同的业务模块和信息流,构建企业的知识库。
  • 关系型数据检索:例如,在医学领域,基于疾病、症状、药物之间的关系进行精准检索。
  • 社交网络分析:在社交网络平台中,通过用户关系图谱来进行精准的内容推荐和社交推荐。
8.5、示例代码
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.retrievers import GraphRetriever

# 初始化嵌入模型
embeddings = OpenAIEmbeddings()

# 创建医学知识文档列表(模拟文档)
medical_knowledge = [
    Document(page_content="心脏病的常见症状包括胸痛、呼吸急促。",
             metadata={"disease": "心脏病", "symptoms": "胸痛, 呼吸急促"}),
    Document(page_content="高血压的治疗方法包括改变饮食和药物治疗。",
             metadata={"disease": "高血压", "treatment": "饮食调整, 药物治疗"})
]

# 创建向量存储
vectorstore = FAISS.from_documents(medical_knowledge, embeddings)

# 创建图谱检索器
retriever = GraphRetriever(vectorstore=vectorstore, graph_structure={"disease": "treatment"})

# 查询图谱检索器
query = "高血压的治疗方法"
results = retriever.get_relevant_documents(query)

# 打印结果
for doc in results:
    print(doc.page_content)
    

九、总结

通过本文介绍的八种 LangChain 检索器,您可以根据具体的业务需求和场景,选择最合适的检索方式来构建高效的信息检索系统。无论是简单的关键词匹配,还是复杂的图谱关系检索,LangChain 都提供了强大而灵活的工具,帮助开发者更好地解决业务中常见的信息检索问题。希望通过这些实例和代码,您能够更好地理解并应用这些检索器,在实际项目中提高工作效率并优化业务流程。
​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

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

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

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论 在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。 阅读详情

相关推荐

基础矩阵、本质矩阵、单应矩阵

基础矩阵是一个 3×3 的秩为2的矩阵,用于描述两个不同视图(或称为图像)之间对应点的几何约束。更具体地说,如果你有两幅图像,分别从两个不同的相机或者相机位置拍摄,那么基础矩阵可以用于找到一个图像中的点在另一个图像中的对应点。本质矩阵也是一个 3×3 的秩为2的矩阵,与基础矩阵非常类似。当两个视图(图像)之间的场景是一个平面或者两个视图之间仅有旋转和平移时,可以使用单应矩阵来关联这两个视图。这三个矩阵都是在计算机视觉中广泛应用的基础工具,但它们适用于不同类型的视图和场景。给定两个图像中的一对对应点。

Gloamirror的博客 1329

基于LangChain实现本地RAG知识库助手(上)

LangChain 框架是一个开源工具,其目标是为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程,特别适用于在一个LLM应用中需提供多个语言模型/词嵌入模型的业务场景。基于LangChain实现RAG应用开发的流程如下:图2:基于LangChain开发RAG应用的一般流程在上图中,每个椭圆形代表了 LangChain 的一个模块,例如数据收集模块或预处理模块。每个矩形代表了一个数据状态,例如原始数据或预处理后的数据。箭头表示数据流的方向,从一个模块流向另一个模块。

优快云_430422的博客 1175

将pytroch模型转为paddlelite模型并集成到android程序中

在android中使用paddlelite加载yolov5模型识别opencv读取的摄像头信息

qq_56460466的博客 1555

如何提高RAG系统准确率?12大常见痛点及巧妙解!

我们探讨了开发 RAG 管道中的 12 个痛点(其中 7 个来自论文,5 个是额外补充)并提供了相应的解决方案。以下是改编自论文《Seven Failure Points When Engineering a Retrieval Augmented Generation System》的图表。

python12345_的博客 1545

三极管NPN与PNP的工作原理及快速识别技巧

本文深入浅出地解析了三极管NPN与PNP的核心工作原理。通过“水龙头”比喻,阐明其以小电流控制大电流的放大与开关本质。文章重点对比了NPN与PNP在电流方向、电位关系和控制逻辑上的根本区别,并提供了快速识别技巧与实用的选型、应用指南,帮助电子爱好者与工程师快速掌握这两种基础元件的关键知识。

neovim7hacker的博客 454

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

干货满满!RAG精度提升秘籍,程序员必备收藏!

文章介绍了提升RAG精度的三大策略:数据准备与预处理(数据清洗、智能分块)、检索环节优化(嵌入模型升级、混合检索、重排序、元数据过滤)和生成环节优化(提示词优化、上下文压缩、知识冲突处理)。这些技巧可解决RAG答案不够精准的问题,是中小企业将私有数据"投喂"给大模型的最经济高效方式。

m0_74942241的博客 996

Opencv计算相机响应函数(Camera Response Function)与Radiance

本文主要用于记录自己在学习CRF过程中遇到的一些问题。 CRF模型 I=f(V(t⋅L))I=f(V( t\cdot L))I=f(V(t⋅L)) 其中III为相机灰度值Intensity,LLL为环境中irradiance,ttt为曝光时间,VVV为相机镜头参数,fff为相机响应函数CRF。 有些论文中认为相机镜头参数是线性的不考虑,但有些考虑了衰减即靠近图像边缘亮度会暗一些,但没有看到二者同时计算的,如果同时计算两个非线性的函数,我觉得可能会有不确定性,在这里还请教一下了解的朋友。 控制

larrydong的博客 6001

RAG实战篇:检索召回结果不准确?试试这三种实用方法

在这篇文章中,围绕检索召回(Retrieval),风叔详细介绍如何优化RAG系统的召回结果,提升LLM大模型的回答准确度。在检索召回的时候,用户的问题会被输入到嵌入模型中进行向量化处理,然后系统会在向量数据库中,搜索与该问题向量语义上相似的知识文本或历史对话记录并返回。在Naive Rag中,系统会将所有检索到的块直接输入到 LLM生成回答,导致出现中间内容丢失、噪声占比过高、上下文长度限制等问题。

2401_85375186的博客 3234

Qt C++实现HTTP/HTTPS服务器与客户端:从Socket到协议解析全流程

HTTP协议作为Web通信的基础,定义了客户端与服务器之间基于文本的请求-响应模型。其工作原理是通过TCP连接传输结构化的报文,实现资源获取与数据交换。在C++开发中,掌握HTTP协议底层实现具有重要技术价值,能够帮助开发者构建高性能、可深度定制的网络应用,尤其适用于嵌入式设备管理、桌面应用后端等场景。本文聚焦于使用Qt框架的QTcpSocket和QSslSocket组件,从Socket层面手动实现完整的HTTP/HTTPS通信栈,涵盖协议解析、流式处理、路由分发等核心环节,并深入探讨了HTTPS证书验证、

weixin_31292729的博客 330

STM32 BootLoader 入门教程:从原理到 APP 跳转实现

在 STM32 项目开发中,BootLoader 通常用于实现固件升级、程序引导和应用程序校验。本文从最基础的 BootLoader 原理开始,讲解 STM32 内部 Flash 分区设计、APP 地址偏移、向量表重定位、BootLoader 跳转 APP 的核心代码,以及实际开发中常见的问题。本文适合刚开始接触 STM32 BootLoader、IAP 在线升级、串口升级、OTA 升级的开发者阅读。

lidecong133的博客 1668

破解PDF解析难题:RAG中高效解析复杂PDF的最佳选择

着检索增强生成(RAG)技术的普及,从朴素 RAG 到高级 RAG,再到 GraphRAG 的快速演进,如微软的 GraphRAG 和 LightRAG 等框架不断涌现。这些框架提升了 RAG 的精度,但大多不支持 PDF 格式,而企业内部却存在大量 PDF 文档。因此,将这些资料有效整合进内部知识库成为技术挑战。

lyy2017175913的博客 2048

蓝牙EDR模式中GFSK调制如何过渡到DPSK调制

这两份文档片段揭示了蓝牙Modem设计中非常精深的部分。它的核心思想是:通过精心的脉冲形状设计和重叠,来保证幅度连续;通过在保护间隔内执行一套复杂的“相位平滑算法”(重复、斜率保持、寻找基准点、冻结),来保证相位连续。Figure 3-2 则是将这个思想用图形化的方式展现出来,说明了脉冲在时间轴上的对齐和叠加关系。这种设计确保了发射机能够严格符合蓝牙规范的要求,实现不同调制方式之间的平滑、无毛刺切换,从而保障了通信的可靠性和高效的频谱利用率。

m0_49540263的博客 283

【AI大模型】RAG效果不好怎么办?试试这八大解决方案(含代码)

通过本文介绍的八种 LangChain 检索器,您可以根据具体的业务需求和场景,选择最合适的检索方式来构建高效的信息检索系统。无论是简单的关键词匹配,还是复杂的图谱关系检索,LangChain 都提供了强大而灵活的工具,帮助开发者更好地解决业务中常见的信息检索问题。希望通过这些实例和代码,您能够更好地理解并应用这些检索器,在实际项目中提高工作效率并优化业务流程。

2401_85327249的博客 999

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

granite-4.0-h-350m功能全解析:从摘要到代码补全

本文介绍了如何在星图GPU平台自动化部署【ollama】granite-4.0-h-350m镜像,实现智能文本处理功能。该轻量级多语言模型支持智能摘要、代码补全等核心能力,典型应用于企业知识管理,可快速从文档中提取关键信息,提升工作效率。

weixin_35266799的博客 329

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Ollama+grainte-4.0-h-350m:12种语言文本生成轻松上手

本文介绍了如何在星图GPU平台上自动化部署【ollama】granite-4.0-h-350m镜像,快速实现12种语言的高质量文本生成。该轻量级模型支持开箱即用的多语言指令执行,典型应用场景包括电商多语言详情页批量生成、跨语言客服对话模拟及技术文档本地化翻译,显著提升内容生产效率。

weixin_36231030的博客 268

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一键部署Granite-4.0-H-350M:快速体验12种语言文本处理

本文介绍了如何在星图GPU平台上自动化部署【ollama】granite-4.0-h-350m镜像,快速启用多语言文本处理能力。该轻量级模型支持中、英、日、韩等12种语言,典型应用于跨语言客服工单处理——如一键完成中文工单翻译、英文分析及法语礼貌回复生成,显著提升企业本地化响应效率。

weixin_42576410的博客 384

接单赚钱:程序员的野路子生存指南!!!2026年掘地求生!

别用别人的尺子量自己。利用这段“自由”时间,一边用野路子搞钱保障基本盘,一边冷静想想自己下一步到底想干嘛——是继续深耕技术冲大厂,还是把副业转正搞个小工作室?今天这篇,献给所有在“灵活就业”边缘疯狂试探的老哥们,咱们主打一个。(拍桌)哎哟我去,兄弟们!上回喷完招聘平台,今天咱不骂了,来点。找不到工作、被优化、空窗期……都灵活就业了,还天天星巴克瑞幸!别总想着“找个班上”,想想怎么。老哥们,失业、空窗、找不到工作,!(去支付宝碰一碰红包了,回聊。虽然不稳定,但救急绝对够用。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 417

6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

Mardi_Ladin的博客 393

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 221

我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

鸽芷咕的博客 2万+

您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

laoyunsi的博客 246
上一篇: 通过优化html的清洗来提高对网页RAG的效果
下一篇: 使用LLM构建智能体应用的架构与实现
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值