【AI 大模型】LlamaIndex 大模型开发框架 ② ( LlamaIndex 可配置的 LLM 类型 | LlamaIndex 可配置的 文本向量模型 类型 )

article/2025/8/15 1:23:10

文章目录

  • 一、LlamaIndex 可配置的 LLM 类型
    • 1、云端 API 类型 LLM
    • 2、本地部署 类型 LLM
    • 3、混合部署 LLM
    • 4、错误示例 - 设置 云端 DeepSeek 大模型
  • 二、LlamaIndex 可配置的 文本向量模型 类型
    • 1、云端 文本向量模型
    • 2、本地部署 文本向量模型
    • 3、适配器微调模型 AdapterEmbeddingModel
    • 4、混合部署 嵌入模型
    • 5、完整代码示例


在这里插入图片描述

在上一篇博客 【AI 大模型】LlamaIndex 大模型开发框架 ① ( LlamaIndex 大语言模型 SDK 简介 | LlamaIndex 软件包安装 | 开发要点说明 | 完整代码示例 ) 中 简单介绍了 LlamaIndex 框架的原理基本使用流程 ;

本篇博客中开始分析 LlamaIndex 框架中 设置 不同的 大语言模型 ( LLM ) 和 嵌入模型 ;





一、LlamaIndex 可配置的 LLM 类型



在 LlamaIndex 框架中 , LLM ( 大语言模型 ) 的配置支持多种类型和方式 , 开发者可根据需求灵活选择 云端 或 本地 部署方案 ;


1、云端 API 类型 LLM


云端 API 类型 LLM :

  • OpenAI 系列 LLM : 通过 API-KEY 密钥 调用 GPT-3.5/GPT-4 等模型 , 可配置官方直连 或 国内中转 的 API-KEY 和 API 地址 ;
from llama_index.llms.openai import OpenAI# 官方直连配置
llm = OpenAI(api_key="sk-xxx",  # 替换为实际API密钥model="gpt-4",     # 指定模型版本temperature=0.7
)# 国内中转配置(需自定义API地址)
llm = OpenAI(api_key="sk-xxx",api_base="https://your-proxy.com/v1",  # 国内代理地址model="gpt-3.5-turbo"
)
  • Claude 系列 LLM :配置对应 API 地址 和 密钥 , 配置 ;
from llama_index.llms.anthropic import Anthropicllm = Anthropic(api_key="claude-api-key",  # Claude密钥base_url="https://api.anthropic.com/v1",  # 可替换为代理地址model="claude-3-opus"
)
  • Replicate 托管 LLM : 云端机器学习平台部署的大模型 , 支持 Llama3、Mistral、StableLM、GPT-J 等开源模型的云端 API 调用 ;
from llama_index.llms.replicate import Replicatellm = Replicate(api_token="r8_xxx",  # Replicate平台密钥model="meta/llama-3-70b-instruct",  # 模型标识temperature=0.5
)

2、本地部署 类型 LLM


本地部署 类型 LLM :

  • Ollama 本地模型 : 支持运行 Llama3、DeepSeek 等 本地化部署 的大模型 ;
from llama_index.llms.ollama import Ollamallm = Ollama(model="llama3",  # 本地模型名称(需提前通过ollama pull下载)base_url="http://localhost:11434",  # Ollama本地服务地址request_timeout=60
)
  • Hugging Face模型 : 通过 Transformers 库加载本地或 Hugging Face 上的模型 , 如 : Zephyr、Falcon ;
from llama_index.llms.huggingface import HuggingFaceLLM# 本地加载HuggingFace模型
llm = HuggingFaceLLM(model_name="HuggingFaceH4/zephyr-7b-beta",  # 模型ID或本地路径tokenizer_name="HuggingFaceH4/zephyr-7b-beta",device_map="auto"  # 自动选择GPU/CPU
)# 使用HuggingFace Inference API(云端)
from llama_index.llms.huggingface import HuggingFaceInferenceAPI
llm = HuggingFaceInferenceAPI(model_name="mistralai/Mistral-7B-Instruct-v0.2",api_key="hf_xxx"  # HuggingFace令牌
)

3、混合部署 LLM


LlamaIndex 框架 支持配置多个 LLM , 常用的场景是 结合 本地模型处理敏感数据 , 云端模型处理复杂任务 ;

下面的代码中 ,

  • 配置了 本地使用 Ollama 部署的 DeepSeek-R1 的 1.5b 蒸馏版本 LLM , 用于处理本地敏感数据 ;
  • 同时 配置了 OpenAI 云端模型 , 处理复杂的任务 ;
local_llm = Ollama(model="deepseek-r1:1.5b")
cloud_llm = OpenAI(model="gpt-4")# 根据数据敏感性选择模型
hybrid_llm = ConditionalLLM(conditions=[DataPrivacyFilter()],llms=[local_llm, cloud_llm]
)

4、错误示例 - 设置 云端 DeepSeek 大模型


LlamaIndex 框架 只支持 OpenAI 、Claude 、 Replicate 云端模型 , 不支持国内的云端部署 LLM , 之前尝试配置 DeepSeek 出现错误 , 不同的厂商需要使用不同的 API ;

按照 DeepSeek 接口文档 , 使用 OpenAI 兼容的 API 格式 , 配置 API-KEY 和 API 地址 , 但是 模型名称 是 deepseek-chat 和 deepseek-reasoner ;
在这里插入图片描述

尝试为 LlamaIndex 框架 配置 DeepSeek 大语言模型 , 执行后会报错 ;

# 安装必要库(LlamaIndex核心框架)
# pip install llama-index# 导入核心模块
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings  # 索引构建/文档加载/全局配置
from llama_index.embeddings.openai import OpenAIEmbedding  # 文本向量化模块
from llama_index.llms.openai import OpenAI  # 大语言模型模块# 配置第三方 OpenAI 兼容服务(核心设置)
Settings.llm = OpenAI(api_key="sk-a6ac1c7c03b940f69b91ee3ddeb6915e",  # 中转服务商提供的API密钥(重要:需保密!)api_base="https://api.deepseek.com/v1",  # 替换为第三方API网关地址model="deepseek-chat",  # 需与服务商支持的模型名称一致temperature=0.1  # 控制输出随机性(0-1,值越小答案越确定)
)# Settings.llm = OpenAI(
#     api_key="sk-i3dHqZygiMb0bQ132c4c602aC2714b8e8cE9A919E7757aF7",  # 中转服务商提供的API密钥(重要:需保密!)
#     api_base="https://xiaoai.plus/v1",  # 替换为第三方API网关地址
#     model="gpt-3.5-turbo",  # 需与服务商支持的模型名称一致
#     temperature=0.1  # 控制输出随机性(0-1,值越小答案越确定)
# )# 配置嵌入模型使用同一个服务商(文档向量化)
Settings.embed_model = OpenAIEmbedding(api_key="sk-i3dHqZygiMb0bQ132c4c602aC2714b8e8cE9A919E7757aF7",  # 通常与LLM使用相同密钥api_base="https://xiaoai.plus/v1",  # 与LLM保持同一服务商model="text-embedding-ada-002"  # 嵌入模型名称(需服务商支持)
)# 加载文档(本地文档预处理)
documents = SimpleDirectoryReader("data").load_data()  # 读取data文件夹内所有文档# 创建索引(文档向量化存储)
index = VectorStoreIndex.from_documents(documents)  # 自动调用embed_model生成向量# 创建查询引擎(问答接口封装)
query_engine = index.as_query_engine()  # 组合索引与LLM的问答系统# 执行查询(语义搜索+LLM生成)
response = query_engine.query("文档中的主要观点是什么?并介绍下单纯形法步骤?使用中文回复,分行解析")  # 自动检索相关段落并生成答案
print(response)  # 输出结构化响应对象

会提示如下错误 : OpenAI 的 API 只支持配置 OpenAI 的模型名称 , 不支持其它模型名称 , DeepSeek 的 OpenAI 兼容调用方式无法使用 ;

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/OpenAI/llama_index_demo4.py
Traceback (most recent call last):File "D:\002_Project\011_Python\OpenAI\llama_index_demo4.py", line 37, in <module>query_engine = index.as_query_engine()  # 组合索引与LLM的问答系统File "D:\001_Develop\022_Python\Python39\lib\site-packages\llama_index\core\indices\base.py", line 381, in as_query_enginereturn RetrieverQueryEngine.from_args(File "D:\001_Develop\022_Python\Python39\lib\site-packages\llama_index\core\query_engine\retriever_query_engine.py", line 102, in from_argsresponse_synthesizer = response_synthesizer or get_response_synthesizer(File "D:\001_Develop\022_Python\Python39\lib\site-packages\llama_index\core\response_synthesizers\factory.py", line 63, in get_response_synthesizerllm.metadata,File "D:\001_Develop\022_Python\Python39\lib\site-packages\llama_index\llms\openai\base.py", line 361, in metadatacontext_window=openai_modelname_to_contextsize(self._get_model_name()),File "D:\001_Develop\022_Python\Python39\lib\site-packages\llama_index\llms\openai\utils.py", line 259, in openai_modelname_to_contextsizeraise ValueError(
ValueError: Unknown model 'deepseek-chat'. Please provide a valid OpenAI model name in: o1, o1-2024-12-17, o1-pro, o1-pro-2025-03-19, o1-preview, o1-preview-2024-09-12, o1-mini, o1-mini-2024-09-12, o3-mini, o3-mini-2025-01-31, o3, o3-2025-04-16, o4-mini, o4-mini-2025-04-16, gpt-4, gpt-4-32k, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-preview, gpt-4-vision-preview, gpt-4-1106-vision-preview, gpt-4-turbo-2024-04-09, gpt-4-turbo, gpt-4o, gpt-4o-audio-preview, gpt-4o-audio-preview-2024-12-17, gpt-4o-audio-preview-2024-10-01, gpt-4o-mini-audio-preview, gpt-4o-mini-audio-preview-2024-12-17, gpt-4o-2024-05-13, gpt-4o-2024-08-06, gpt-4o-2024-11-20, gpt-4.5-preview, gpt-4.5-preview-2025-02-27, chatgpt-4o-latest, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4-0613, gpt-4-32k-0613, gpt-4-0314, gpt-4-32k-0314, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4.1-2025-04-14, gpt-4.1-mini-2025-04-14, gpt-4.1-nano-2025-04-14, gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-0125, gpt-3.5-turbo-1106, gpt-3.5-turbo-0613, gpt-3.5-turbo-16k-0613, gpt-3.5-turbo-0301, text-davinci-003, text-davinci-002, gpt-3.5-turbo-instruct, text-ada-001, text-babbage-001, text-curie-001, ada, babbage, curie, davinci, gpt-35-turbo-16k, gpt-35-turbo, gpt-35-turbo-0125, gpt-35-turbo-1106, gpt-35-turbo-0613, gpt-35-turbo-16k-0613Process finished with exit code 1

在这里插入图片描述

将模型名称修改为 gpt-3.5-turbo , 又会报错

openai.BadRequestError: Error code: 400 - {'error': {'message': 'Model Not Exist', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_request_error'}}

在这里插入图片描述





二、LlamaIndex 可配置的 文本向量模型 类型



文本向量模型 又称为 文本嵌入模型、嵌入模型 ;

LlamaIndex 框架支持多种 文本向量模型 配置方式 , 开发者可根据需求选择 云端 API、本地部署 微调适配 等方案 ;


1、云端 文本向量模型


云端 API 类型 文本向量模型 :

  • OpenAI Embeddings : 需要 配置 OpenAI 的 API-KEY 和 地址 , 支持 通用语义检索、多语言支持 , 根据 Token 收费 , 每一千 Token 收费 0.13 美元 ; 如 text-embedding-ada-002 ; 该方式 通用性强 , 可生成 高维度向量 , 最高3072维 , 简单易用 , 但依赖云端 API ;
from llama_index.embeddings.openai import OpenAIEmbedding
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-large",  # 可选128/3072两种维度版本api_key="sk-xxx",api_base="https://api.example.com/v1",  # 企业定制端点embed_batch_size=256  # 批量处理加速
)
  • Hugging Face Inference API : Hugging Face 托管了数千个开源模型 , 如 : BGE、GPT-2 , 支持本地或云端部署 , 可自定义模型 , 数据隐私控制强 , 支持私有云 ;
    • 适用场景 : 研究实验、定制化需求(如法律/医疗领域微调),需平衡成本与数据安全。
    • 调用方式 : REST API调用 . 免费额度+按需付费 , 可自托管模型降低费用 , 需要自己 从 Hugging Face 模型广场中 , 查找合适的模型 , 大多数模型只支持少数几种语言 ;
from llama_index.embeddings.huggingface import HuggingFaceInferenceAPIEmbedding
Settings.embed_model = HuggingFaceInferenceAPIEmbedding(model_name="BAAI/bge-large-en-v1.5",api_token="hf_xxx",encode_kwargs={"normalize_embeddings": True}  # 归一化向量
)
  • Cohere Embed : 商业 API 服务 , 提供 多语言嵌入(如multilingual-22-12) , 针对检索、分类任务优化 , 支持长文本分块处理 ; 需配置 API 密钥调用 , 多任务编码模式 , 如 : 语义搜索 , 分类 , 相似度排序 等 ;
    • 适用场景 : 企业级应用(如电商搜索、多语言内容推荐),需快速集成且无需本地部署。
    • 调用方式 : API密钥授权,按请求次数计费,提供Python/Node.js SDK。
from llama_index.embeddings.cohere import CohereEmbedding
Settings.embed_model = CohereEmbedding(cohere_api_key="xxx",model_name="embed-multilingual-v3.0",  # 支持100+语言input_type="search_document"  # 指定编码用途
)

2、本地部署 文本向量模型


本地部署 类型 文本向量模型 :

  • Hugging Face 本地模型 : 通过 Hugging Face 的 transformers 库直接加载本地模型文件 , 支持离线推理 , 这类模型通常基于 BERT、RoBERTa 等架构 , 通过预训练捕捉文本语义特征 , 生成高维向量 , 如 : BAAI/bge-large-zh-v1.5 ;
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
Settings.embed_model = HuggingFaceEmbedding(model_name="/path/to/BAAI_bge-base-en-v1.5",  # 本地模型路径  device="cuda",  # GPU加速pooling="mean",  # 池化策略query_instruction="为这个句子生成表示:"
)
  • Sentence Transformers : 基于 Siamese 网络结构 , 对预训练模型 ( 如BERT ) 进行二次训练 , 优化句子级语义表示 , 生成384维稠密向量 , 适合直接计算余弦相似度 , 如 : all-MiniLM-L6-v2 ;
from llama_index.embeddings.langchain import LangchainEmbedding
from langchain.embeddings import HuggingFaceEmbeddingslc_embed = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2",model_kwargs={"device": "cuda"}
)
Settings.embed_model = LangchainEmbedding(lc_embed)
  • Ollama 托管模型 : 通过本地 Ollama 服务托管模型 , 将模型权重、配置和依赖封装为标准化包 , 自动管理GPU/CPU资源分配 , 支持动态量化 ( 如4-bit压缩 ) 以降低显存占用 ;
from llama_index.embeddings.ollama import OllamaEmbedding
Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text",base_url="http://localhost:11434",ollama_additional_kwargs={"num_ctx": 4096}  # 上下文窗口扩展
)

3、适配器微调模型 AdapterEmbeddingModel


EmbeddingAdapterFinetuneEngine 是一种 结合 嵌入(Embedding) 和 微调(Fine-tuning) 技术的引擎 , 主要用于优化语义搜索和特定任务适配 ;

EmbeddingAdapterFinetuneEngine 引擎用于 微调适配 任务 , 在预训练模型(如GPT-3)顶层添加轻量级适配层,针对特定任务(如财税问答)调整参数,避免全参数微调的高成本 ;


微调流程 : 下面的微调操作 是 在 BAAI/bge-base-en 预训练模型 的基础上 , 加载 特定领域的数据 作为训练数据 , 用于将该模型 微调为 特定领域的 模型 ;

微调完成后 , 将 微调结果 保存到 medical_adapter 模型中 ;

微调后的效果 可以 使 新模型 在 特定领域 有更好的性能 , 如 : 眼科诊断准确率提升 20% ;

from llama_index.finetuning.embeddings.adapter import EmbeddingAdapterFinetuneEngine# 准备领域数据(示例:医疗文本)
train_docs = load_medical_reports()  
val_docs = load_clinical_notes()# 初始化微调引擎
finetune_engine = EmbeddingAdapterFinetuneEngine(base_model=HuggingFaceEmbedding("BAAI/bge-base-en"),train_dataset=train_docs,output_dir="med_adapter",output_dim=512,  # 扩展向量维度epochs=10,batch_size=32
)# 执行微调并保存
finetune_engine.finetune()
finetune_engine.save("medical_adapter")

在 LlamaIndex 框架中 , 使用上述 适配微调模型 作为 嵌入模型 ;

from llama_index.embeddings.adapter import AdapterEmbeddingModeladapter_model = AdapterEmbeddingModel(base_embed_model=HuggingFaceEmbedding("BAAI/bge-base-en"),adapter_path="medical_adapter"
)
Settings.embed_model = adapter_model

4、混合部署 嵌入模型


LlamaIndex 混合 嵌入模型 部署 , 核心原理 是 按数据敏感度自动选择本地或云端模型 , 平衡隐私与成本 ,

  • 敏感数据用本地模型 , 如 : BAAI/bge-base-en , 离线运行 ;
  • 非敏感数据用 OpenAI 云端 API , 成本较低 ;

下面的代码中 , 自动判断 数据的敏感性 , 如果是敏感数据 使用本地部署的 HuggingFace 嵌入模型 , 非敏感数据使用 OpenAI 云端嵌入模型 ;

# 敏感数据用本地模型
local_embed = HuggingFaceEmbedding(model_name="BAAI/bge-base-en")  # 非敏感数据用OpenAI 
cloud_embed = OpenAIEmbedding()# 智能路由
from llama_index.embeddings import RouterEmbedding
router_embed = RouterEmbedding(routes=[(lambda x: "机密" not in x.text, local_embed),(lambda x: True, cloud_embed)]
)
Settings.embed_model = router_embed

5、完整代码示例


首先 , 安装必要的 软件包 , 执行如下命令 , 安装 Hugging Face 相关软件包 ;

pip install llama-index-core llama-index-llms-openai llama-index-embeddings-huggingface sentence-transformers

然后 , 设置 Hugging Face 镜像 , 国内无法访问 , 注意 下面两行代码必须写在 Python 代码的第一行 ;

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"  # 设置Hugging Face模型的下载镜像地址,核心配置用于加速模型下载

最后 , 为 LlamaIndex 框架配置 HuggingFace 本地部署的 向量模型 BAAI/bge-large-zh-v1.5 , 通过 cache_folder=“./models” 指定向量本地部署位置为 本代码层级目录的 models 目录下 ;

Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-zh-v1.5",  # 指定中文嵌入模型cache_folder="./models",  # 模型缓存目录(自动从镜像站下载)
)

完整代码示例 :

# 安装必要库(LlamaIndex核心框架)
# pip install llama-index-core llama-index-llms-openai llama-index-embeddings-huggingface sentence-transformersimport os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"  # 设置Hugging Face模型的下载镜像地址,核心配置用于加速模型下载# 导入核心模块
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings  # 索引构建/文档加载/全局配置
from llama_index.llms.openai import OpenAI  # 大语言模型模块
from llama_index.embeddings.huggingface import HuggingFaceEmbedding # Hugging Face 嵌入模型# 配置第三方 OpenAI 兼容服务(核心设置)
Settings.llm = OpenAI(api_key="sk-i3dHqZygiMb0bQ132c4c602aC2714b8e8cE9A919E7757aF7",  # 中转服务商提供的API密钥(重要:需保密!)api_base="https://xiaoai.plus/v1",  # 替换为第三方API网关地址model="gpt-3.5-turbo",  # 需与服务商支持的模型名称一致temperature=0.1  # 控制输出随机性(0-1,值越小答案越确定)
)# 配置嵌入模型使用同一个服务商(文档向量化)
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-zh-v1.5",  # 指定中文嵌入模型cache_folder="./models",  # 模型缓存目录(自动从镜像站下载)
)# 加载文档(本地文档预处理)
documents = SimpleDirectoryReader("data").load_data()  # 读取data文件夹内所有文档# 创建索引(文档向量化存储)
index = VectorStoreIndex.from_documents(documents)  # 自动调用embed_model生成向量# 创建查询引擎(问答接口封装)
query_engine = index.as_query_engine()  # 组合索引与LLM的问答系统# 执行查询(语义搜索+LLM生成)
response = query_engine.query("文档中的主要观点是什么?并介绍下单纯形法步骤?使用中文回复,分行解析")  # 自动检索相关段落并生成答案
print(response)  # 输出结构化响应对象

执行结果 :

  • 终端打印信息 :
文档的主要观点是介绍单纯形法在运筹学中的应用,特别是如何通过该方法求解线性规划问题。单纯形法的步骤如下:1. **初始基可行解**:首先需要找到一个初始的基可行解,这是进行后续步骤的基础。2. **判定是否最优解**:使用一个准则来判断当前的基可行解是否为最优解,这是单纯形法的核心问题。3. **是最优解**:如果当前的基可行解是最优解,则结束迭代过程。4. **不是最优解**:如果当前的基可行解不是最优解,则需要迭代到下一个基可行解,并继续判定是否为最优解。此过程也需要一个准则来指导如何进行迭代。在这个过程中,涉及到两个重要的准则:一个是判断基可行解是否为最优解,另一个是如何从一个基可行解迭代到下一个基可行解。
  • PyCharm 执行结果 :

在这里插入图片描述

  • 模型本地部署位置 : BAAI/bge-large-zh-v1.5 模型被下载到了 models\models–BAAI–bge-large-zh-v1.5 目录中 , 下载了 1.68GB 左右的模型数据 ;

在这里插入图片描述


http://www.hkcw.cn/article/oTfHutLnIU.shtml

相关文章

云端微光,AI启航:低代码开发的智造未来

文章目录 前言一、引言&#xff1a;技术浪潮中的个人视角初次体验腾讯云开发 Copilot1.1 低代码的时代机遇1.1.1 为什么低代码如此重要&#xff1f; 1.2 AI 的引入&#xff1a;革新的力量1.1.2 Copilot 的亮点 1.3 初学者的视角1.3.1 Copilot 带来的改变 二、体验记录&#xff…

OCR+AI双引擎驱动:手把手教学构建智能财报分析系统

在金融行业中&#xff0c;财报分析是帮助企业和投资者做出决策的关键环节。随着科技的快速发展&#xff0c;自动化、智能化的财报分析变得越来越重要。传统的人工财报分析不仅费时费力&#xff0c;而且容易受到人为错误的影响&#xff0c;因此企业急需借助先进的技术来提高效率…

秒杀系统—4.第二版升级优化的技术文档二

大纲 7.秒杀系统的秒杀活动服务实现 (1)数据库表设计 (2)秒杀活动状态机 (3)添加秒杀活动 (4)删除秒杀活动 (5)修改秒杀活动 (6)后台查询秒杀活动 (7)前台查询秒杀活动 (8)查询秒杀商品的销售进度 (9)秒杀活动添加秒杀商品 (10)秒杀活动删除秒杀商品 (11)触发渲染秒…

“苏超”10元门票被炒到500元 散装江苏的足球狂热

端午假期,当全球球迷的目光聚焦在欧冠决赛时,江苏人正为自己的“苏超”联赛沸腾。尽管没有大牌外援和全网转播,但场均上座率接近万人,比赛门票一票难求,这场江苏省内的业余联赛迅速走红。“苏超”有多火?10元的门票被炒到500元,上座率甚至超过了一些职业联赛。实际上,“…

【Leetcode】vector刷题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接&#xff1a;136.只出现一…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

【数据结构】手撕AVL树(万字详解)

目录 AVL树的概念为啥要有AVL树&#xff1f;概念 AVL树节点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋 AVL树的查找AVL树的验证end AVL树的概念 为啥要有AVL树&#xff1f; 在上一章节的二叉搜索树中&#xff0c;我们在插入节点的操作中。有可能一直往一边插…

2024年信息素养大赛 C++小学组初赛 算法创意实践挑战赛 真题详细解析

2024年信息素养大赛初赛C真题解析 选择题&#xff08;共15题&#xff0c;每题5分&#xff0c;共75分&#xff09; 1、运行下列程序段&#xff0c;输出的结果是( ) int n572765; cout <<n/10%10; A、5 B、6 C、4 D、1 答案&#xff1a;B 考点分析&#xff1a;考察…

GPIO子系统层次与数据结构详解

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析&#xff1a;imx_pinctrl_soc_info结构体Pinctrl子系统中c…

深度解析算法之模拟

39.替换所有的问号 题目链接 给你一个仅包含小写英文字母和 ? 字符的字符串 s&#xff0c;请你将所有的 ? 转换为若干小写字母&#xff0c;使最终的字符串不包含任何 连续重复 的字符。 注意&#xff1a;你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外&#…

《数据结构初阶》【顺序栈 + 链式队列 + 循环队列】

《数据结构初阶》【顺序栈 链式队列 循环队列】 前言&#xff1a;什么是栈&#xff1f;栈有哪些实现方式&#xff1f;我们要选择哪种实现方式&#xff1f;--------------------------------什么是队列&#xff1f;队列有哪些实现方式&#xff1f;我们要选择哪种实现方式&…

进阶数据结构: 二叉搜索树

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

本人第一篇CSDN博客~欢迎关注&#xff01; DOA是指Direction Of Arrival&#xff0c;是利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式&#xff0c;也称测向、空间谱估计。主要应用于雷达、通信、电子对抗和侦察等领域。 一、阵列信号模型 如上图所示&#xff0…

算法效率的钥匙:从大O看复杂度计算

目录 1.数据结构与算法 1.1数据结构介绍 1.2算法介绍 2.算法效率 2.1复杂度 2.1.1时间复杂度 2.1.1.1时间复杂度计算示例1 2.1.1.2时间复杂度计算示例2 2.1.1.3时间复杂度计算示例3 2.1.1.4时间复杂度计算示例4 2.1.1.5时间复杂度计算示例5 2.1.1.6时间复杂度计算示例6…

A*算法详解【附算法代码与运行结果】

算法背景 A*算法是一种在图形平面上&#xff0c;有多个路径中寻找一条从起始点到目标点的最短遍历路径的算法。它属于启发式搜索算法&#xff08;Heuristic Search Algorithm&#xff09;&#xff0c;因为它使用启发式方法来计算图中的节点&#xff0c;从而减少实际计算的节点…

【leetcode】逐层探索:BFS求解最短路的原理与实践

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

七大排序算法深度解析:从原理到代码实现

1.排序 排序算法是计算机科学中最基础的技能之一&#xff0c;无论你是编程新手还是经验丰富的开发者&#xff0c;理解这些算法都能显著提升代码效率。本文将用最简单的方式&#xff0c;带你快速掌握七大经典排序算法的核心原理与实现。 1.1排序概念及其运用 排序是指将一组数据…

Python的情感词典情感分析和情绪计算

一.大连理工中文情感词典 情感分析 (Sentiment Analysis)和情绪分类 (Emotion Classification&#xff09;都是非常重要的文本挖掘手段。情感分析的基本流程如下图所示&#xff0c;通常包括&#xff1a; 自定义爬虫抓取文本信息&#xff1b;使用Jieba工具进行中文分词、词性标…

C++之vector类(超详细)

这节我们来学习一下&#xff0c;C中一个重要的工具——STL&#xff0c;这是C中自带的一个标准库&#xff0c;我们可以直接调用这个库中的函数或者容器&#xff0c;可以使效率大大提升。这节我们介绍STL中的vector。 文章目录 前言 一、标准库类型vector 二、vector的使用 2.…

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

&#x1f4da; 本文主要总结了一些常见的C面试题&#xff0c;主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能&#xff0c;掌握这些内容&#xff0c;基本上就满足C的岗位技能&#xff08;红色标记为重点内容&#xff09;&#xff0c;欢迎大家前来学习指正&…