还在手动处理高维数据?Python+向量数据库自动化方案来了

第一章:还在手动处理高维数据?Python+向量数据库自动化方案来了

在人工智能和机器学习广泛应用的今天,高维数据(如图像、文本嵌入、音频特征)的处理已成为日常挑战。传统方法依赖人工特征提取与静态存储结构,效率低下且难以扩展。借助 Python 生态与现代向量数据库,开发者可构建高效、自动化的高维数据处理流水线。

为何选择向量数据库

向量数据库专为相似性搜索优化,支持快速插入、查询与索引高维向量。相比传统数据库,其核心优势包括:
  • 支持近似最近邻(ANN)搜索,大幅缩短查询响应时间
  • 内置向量索引机制(如 HNSW、IVF),适应亿级数据规模
  • 与深度学习模型无缝集成,便于部署嵌入流水线

快速搭建自动化流程

以文本处理为例,使用 sentence-transformers 生成嵌入,并存入 Qdrant 向量数据库:
# 安装依赖
# pip install sentence-transformers qdrant-client

from sentence_transformers import SentenceTransformer
from qdrant_client import QdrantClient
from qdrant_client.models import PointStruct

# 初始化模型与客户端
model = SentenceTransformer('all-MiniLM-L6-v2')
client = QdrantClient("localhost", port=6333)

# 文本转为向量并写入数据库
texts = ["机器学习很有趣", "向量数据库提升检索效率", "Python自动化是未来"]
vectors = model.encode(texts)

points = [
    PointStruct(id=idx, vector=vec.tolist(), payload={"text": txt})
    for idx, (txt, vec) in enumerate(zip(texts, vectors))
]

client.upsert(collection_name="demo_collection", wait=True, points=points)
上述代码将文本自动编码为384维向量,并持久化至本地 Qdrant 实例,后续可通过 search 接口实现语义匹配。

典型应用场景对比

场景传统方式向量数据库方案
相似新闻推荐关键词匹配,准确率低语义向量匹配,相关性更高
图像检索基于文件名或标签通过图像嵌入进行视觉相似搜索
graph TD A[原始数据] --> B(Embedding模型) B --> C[向量化] C --> D[向量数据库] D --> E[语义搜索/聚类/推荐]

第二章:向量数据库与Python集成基础

2.1 向量数据库核心概念与适用场景解析

向量数据库是一种专门用于存储、索引和查询高维向量数据的数据库系统,广泛应用于人工智能和机器学习领域。其核心在于将非结构化数据(如文本、图像、音频)通过深度学习模型映射为高维向量,并支持高效的相似性搜索。
核心特性
  • 向量化表示:利用嵌入模型(Embedding Model)将原始数据转换为数值向量;
  • 近似最近邻搜索(ANN):在大规模数据集中快速查找语义相近的向量;
  • 高维索引优化:采用HNSW、IVF等算法提升检索效率。
典型应用场景
场景说明
语义搜索基于意图而非关键词匹配文档
推荐系统通过用户行为向量匹配相似内容
图像识别以图搜图,实现跨模态检索
# 示例:使用Sentence Transformers生成文本向量
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
sentences = ["人工智能改变世界", "机器学习是AI的核心"]
embeddings = model.encode(sentences)
print(embeddings.shape)  # 输出: (2, 384)
该代码将中文句子编码为384维向量,可用于后续的相似度计算或存入向量数据库。

2.2 主流向量数据库选型对比(Pinecone、Weaviate、Milvus)

在向量数据库的选型中,Pinecone、Weaviate 和 Milvus 因其高性能与生态集成能力成为主流选择。
核心特性对比
特性PineconeWeaviateMilvus
部署方式仅托管开源 + 托管开源 + 混合
查询语言专用APIGraphQL + RESTSDK + SQL-like
扩展性高(自动扩展)中等高(分布式架构)
代码示例:Milvus 插入向量
from pymilvus import connections, Collection

connections.connect(host='localhost', port='19530')
collection = Collection("demo_collection")

data = [
    [1, 2, 3],
    [[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]]
]
collection.insert(data)
该代码建立本地 Milvus 连接,获取集合实例并插入 ID 与二维向量数据。pymilvus SDK 简化了操作流程,适用于大规模向量写入场景。

2.3 Python客户端安装与连接配置实战

在实际开发中,正确安装Python Redis客户端并完成连接配置是操作Redis的前提。推荐使用`redis-py`作为官方主流客户端库。
安装redis-py
通过pip安装最新稳定版本:
pip install redis
该命令将自动安装redis-py及其依赖,支持Python 3.7+环境。
建立基本连接
使用以下代码初始化连接:
import redis

client = redis.Redis(
    host='localhost',
    port=6379,
    db=0,
    password=None,
    socket_connect_timeout=5
)
参数说明:`host`和`port`指定服务器地址;`db`选择数据库索引;`password`为空表示无需认证;`socket_connect_timeout`设置连接超时时间,避免阻塞。
连接参数对比
参数作用建议值
socket_connect_timeout连接阶段超时控制5秒
socket_timeout读写操作超时10秒

2.4 高维向量的生成与嵌入模型集成

在现代语义检索系统中,高维向量的生成依赖于深度预训练嵌入模型,如BERT、Sentence-BERT或专用向量化模型。这些模型将文本映射到768维甚至更高维度的稠密向量空间,保留语义相似性。
嵌入模型集成流程
  • 输入文本经分词器处理后送入模型
  • 模型最后一层输出的隐藏状态进行池化(如均值池化)
  • 输出固定维度的向量用于后续索引或检索
# 使用Sentence-BERT生成句向量
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
sentences = ["人工智能正在改变世界", "AI is transforming the world"]
embeddings = model.encode(sentences)
print(embeddings.shape)  # 输出: (2, 384)
上述代码调用轻量级Sentence-BERT模型对中文句子进行编码,生成384维向量。模型自动处理tokenization与池化,输出可用于余弦相似度计算的归一化向量,便于后续在向量数据库中高效检索。

2.5 数据写入与索引构建的自动化流程

在现代搜索引擎架构中,数据写入与索引构建需实现无缝协同。系统通过消息队列接收原始数据变更事件,触发后续处理流程。
数据同步机制
新增或更新的数据首先写入分布式存储系统,同时将操作日志推送至Kafka。消费者服务监听指定Topic,解析后生成倒排索引文档。
// 示例:从Kafka消费数据并构建索引
func ConsumeAndIndex(msg []byte) error {
    var doc Document
    if err := json.Unmarshal(msg, &doc); err != nil {
        return err
    }
    return Indexer.AddDocument(doc.ID, doc.Content)
}
该函数将JSON格式的消息反序列化为文档结构,并调用索引器接口完成增量添加。其中Indexer.AddDocument内部采用分段式FST(有限状态转换器)优化插入性能。
自动化索引调度
  • 定时合并小规模索引段,减少磁盘碎片
  • 基于负载动态调整资源分配
  • 支持失败重试与版本回滚机制

第三章:基于Python的数据预处理与向量化

3.1 文本/图像数据清洗与标准化处理

文本数据清洗流程
在自然语言处理任务中,原始文本常包含噪声,如特殊字符、HTML标签和多余空格。需进行标准化清洗。

import re
def clean_text(text):
    text = re.sub(r'<.*?>', '', text)  # 移除HTML标签
    text = re.sub(r'[^a-zA-Z\s]', '', text)  # 仅保留字母和空格
    text = text.lower().strip()  # 转小写并去首尾空格
    return text
该函数通过正则表达式移除干扰符号,确保输入文本格式统一,提升后续分词与建模效果。
图像标准化处理
图像数据需统一尺寸与像素分布。常见做法是归一化至[0,1]区间,并进行Z-score标准化。
  • 调整图像尺寸为固定分辨率(如224×224)
  • 将像素值从[0,255]缩放到[0,1]
  • 使用均值与标准差进行标准化:(pixel - mean) / std

3.2 使用Sentence-Transformers实现文本向量化

安装与基础使用
Sentence-Transformers 是基于 PyTorch 和 Transformers 构建的库,专用于生成句子级语义向量。首先通过 pip 安装:
pip install sentence-transformers
该命令会自动安装依赖项,包括 transformers、torch 和 scikit-learn。
加载预训练模型并编码文本
支持多种预训练模型,如 'all-MiniLM-L6-v2',适用于英文语义相似度任务。
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('all-MiniLM-L6-v2')
sentences = ["Hello world", "How are you doing today?"]
embeddings = model.encode(sentences)
print(embeddings.shape)  # 输出: (2, 384)
encode() 方法将文本转换为固定维度的向量,默认返回 384 维向量。参数 normalize_embeddings=True 可启用单位向量归一化,便于后续余弦相似度计算。

3.3 利用CNN或ViT模型提取图像特征向量

现代图像特征提取主要依赖于卷积神经网络(CNN)和视觉Transformer(ViT)。CNN通过局部感受野与权值共享捕获空间层次特征,而ViT将图像分割为patch序列,借助自注意力机制建模全局依赖。
使用预训练ResNet提取特征
import torch
import torchvision.models as models
import torchvision.transforms as transforms

# 加载预训练CNN模型
model = models.resnet50(pretrained=True)
model = torch.nn.Sequential(*list(model.children())[:-1])  # 去除分类层
model.eval()

# 图像预处理
transform = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
上述代码通过截断ResNet50的最后全连接层,获取输出为2048维的特征向量。输入图像经标准化处理后送入模型,输出即为紧致的图像嵌入表示。
CNN与ViT对比分析
模型局部性全局关系建模计算复杂度
CNN强弱(受限于感受野)低
ViT弱(依赖patch划分)强(自注意力机制)高

第四章:自动化检索与应用系统构建

4.1 实现高效相似性搜索与结果排序

在大规模向量数据中实现快速相似性搜索,核心在于索引结构与排序算法的协同优化。采用近似最近邻(ANN)算法如HNSW可显著提升检索效率。
构建HNSW索引示例
import faiss
index = faiss.IndexHNSWFlat(dim, 32)  # dim为向量维度,32为邻居数
index.hnsw.efSearch = 64
该代码创建HNSW索引,其中 efSearch 控制搜索时的候选节点数量,值越大精度越高但耗时增加。
多级排序策略
  • 第一阶段:基于向量相似度进行粗排,使用内积或欧氏距离
  • 第二阶段:引入重排序模型(reranker),结合语义与上下文信息精调结果
通过分层处理,系统可在保证响应速度的同时提升结果相关性。

4.2 构建支持动态更新的向量索引管道

在实时检索场景中,向量索引需支持高效的数据增删改操作。传统静态索引无法满足频繁更新需求,因此必须设计具备增量构建能力的管道架构。
数据同步机制
通过消息队列(如Kafka)捕获数据变更事件,触发向量模型重新编码并推送至索引服务,确保语义一致性。
增量索引更新策略
  • 局部重建:仅对受影响的聚类分区进行重训练
  • 双缓冲技术:维护新旧索引副本,原子切换降低延迟
// 示例:向量插入接口
func (p *IndexPipeline) Insert(vectors []float32, id string) error {
    p.mu.Lock()
    defer p.mu.Unlock()
    return p.index.Add(vectors, id) // 线程安全插入
}
该方法通过互斥锁保障并发安全,Add操作底层采用HNSW图结构动态扩展节点,时间复杂度接近O(log n)。

4.3 多模态数据混合检索实践

在多模态系统中,文本、图像与音频数据常需联合检索。为实现高效融合,通常采用向量索引与结构化查询协同策略。
特征向量化处理
各类模态数据通过预训练模型转化为统一维度的嵌入向量。例如使用CLIP将图像和文本映射至同一语义空间:

import torch
from transformers import CLIPProcessor, CLIPModel

model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

inputs = processor(text=["a red car"], images=image_tensor, return_tensors="pt", padding=True)
embeddings = model.get_text_features(**inputs) + model.get_image_features(pixel_values=inputs["pixel_values"])
该代码段将文本与图像输入编码为联合嵌入向量,便于后续相似度计算。
混合检索流程
  • 原始数据经多模态编码器转换为向量
  • 向量存入支持近似最近邻搜索的数据库(如Faiss)
  • 结合元数据过滤(如时间、类别)进行复合查询

4.4 与Flask/FastAPI集成打造REST服务接口

在现代微服务架构中,将数据库能力封装为RESTful接口已成为标准实践。通过与Flask或FastAPI集成,可快速暴露TiDB的高性能数据访问能力。
使用FastAPI快速构建接口
from fastapi import FastAPI
import sqlalchemy

app = FastAPI()
engine = sqlalchemy.create_engine("tidb://user:pass@localhost:4000/database")

@app.get("/users/{user_id}")
def get_user(user_id: int):
    with engine.connect() as conn:
        result = conn.execute(sqlalchemy.text("SELECT * FROM users WHERE id = :id"), {"id": user_id})
        return result.fetchone()
该代码创建了一个基于FastAPI的GET接口,通过SQLAlchemy连接TiDB,接收路径参数user_id并执行参数化查询,防止SQL注入。
Flask中的异步支持对比
  • FastAPI原生支持异步,适合高并发场景
  • Flask需借助gevent或asyncio扩展实现并发
  • 两者均可通过中间件集成JWT认证与日志追踪

第五章:未来趋势与性能优化方向

边缘计算与低延迟架构的融合
随着物联网设备激增,将计算任务下沉至边缘节点成为关键优化路径。例如,在智能工厂场景中,通过在网关层部署轻量级推理模型,可将响应延迟从 200ms 降低至 30ms 以内。
  • 使用 eBPF 技术实现内核级流量过滤,减少用户态与内核态切换开销
  • 采用 QUIC 协议替代传统 TCP,有效应对高丢包网络环境下的连接延迟
  • 利用 WebAssembly 在边缘运行沙箱化函数,提升执行安全性与启动速度
编译时优化与运行时监控协同
Go 语言中可通过编译标志精细控制性能特征:
// 启用 SSA 阶段优化,关闭 CGO 以减少外部调用开销
//go build -gcflags="-N -l" -ldflags="-s -w" -tags netgo
package main

import _ "net/http/pprof"
结合 Prometheus 采集 GC 暂停时间、堆内存增长率等指标,建立动态调优反馈闭环。某金融支付系统通过此方法将 P99 延迟稳定性提升 40%。
硬件感知型资源调度策略
现代 NUMA 架构下,CPU 与内存拓扑关系显著影响性能表现。以下为 Kubernetes 中设置硬件亲和性的配置片段:
配置项值说明
topologyHintsrequired强制 Pod 调度至指定 NUMA 节点
cpuManagerPolicystatic保证独占 CPU 核心,避免上下文切换
监控数据流:应用指标 → cAdvisor → kube-state-metrics → Prometheus → Grafana 可视化

相关推荐

如何用python获取水系矢量数据?并将这些矢量数据按照省份进行裁剪?

2. 使用Python的ArcPy模块获取水系矢量数据。如果有ArcGIS软件,则可以建立Python环境,在该环境中使用ArcPy模块来进行操作,包括获取水系矢量数据等。3) 读取矢量文件:使用geopandas.read_file()函数读取shp格式的矢量文件。2) 获取水系矢量数据:从遥感卫星、行政管理部门等途径获取水系矢量数据,一般为shp格式。2) 准备水系矢量数据:同上,可以从地理信息系统、行政管理部门等途径获取。3) 使用ArcPy模块来读取水系矢量数据。# 读取水系矢量数据。

2301_77925375的博客 681

Python 矢量数据库和矢量索引:构建 LLM 应用程序

矢量数据库支持快速相似性搜索和跨数据点扩展。对于 LLM 应用程序,矢量索引可以通过将矢量附加到现有存储来简化完整矢量数据库的体系结构。选择索引还是数据库取决于特殊需要、现有基础结构和更广泛的企业要求。

ygtu2018的博客 417

基于 Qt 6 / C++17 的多算法加解密工具(学习研究用途) 涵盖编码、古典密码、对称/非对称加密、哈希摘要共 24 种算法,全部纯 C++ 自实现,不依赖 OpenSSL/GmSSL

基于 Qt 6 / C++17 的多算法加解密工具(学习研究用途)。涵盖编码、古典密码、对称/非对称加密、哈希摘要共 24 种算法,全部纯 C++ 自实现,不依赖 OpenSSL/GmSSL。含图形界面、批量文件加解密、密钥管理、性能测试与操作日志。提供标准测试向量自测。

Python读写矢量数据(1)针对读取矢量数据——Python地理数据处理学习分享

分享Python地理数据处理学习内容,仅有矢量读取部分,输入部分在下篇。大家加油!!!

remote_giser的博客 3125

考虑一次调频以及二次调频和各机组调频特性的双目标风光水火储动态调度研究(Matlab代码实现)

考虑一次调频以及二次调频和各机组调频特性的双目标风光水火储动态调度研究(Matlab代码实现)内容概要:本文研究了一种考虑一次调频、二次调频以及各机组调频特性的双目标优化模型,用于风光水火储多能互补系统的动态调度问题。该模型以系统运行成本最小化和新能源消纳最大化为双重优化目标,综合考虑了各类电源的出力特性、储能系统的充放电行为及电网频率响应要求。通过Matlab编程实现了完整的求解流程,采用多目标优化算法对复杂约束条件下的调度方案进行求解,并对不同场景下的调度结果进行仿真分析,验证了所提模型在提升系统经济性与稳定性方面的有效性。研究还探讨了储能系统在平抑新能源波动、参与频率调节中的关键作用,为高比例可再生能源接入下的电力系统调度提供了理论支持和技术路径。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源调度、电力系统优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决含多种能源形式的复杂电力系统在实际运行中的动态调度问题;②研究储能系统在调频和促进新能源消纳中的协同机制;③掌握多目标优化在电力系统调度中的建模与实现方法; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件处理及多目标折衷分析方法,同时可通过修改参数进行不同场景的仿真实验,以加深对系统动态行为的理解。

图腾柱无桥PFC变换器+平均电流控制+PI电压双闭环前馈控制设计(Simulink仿真实现)

内容概要:本文系统研究了图腾柱无桥PFC变换器的高性能控制策略,采用平均电流控制与PI电压双闭环前馈控制相结合的方法,并基于Simulink平台构建了完整的仿真模型进行验证。文章深入剖析了控制系统的结构设计,重点阐述了电压外环与电流内环的协同工作机理,其中前馈控制的引入显著增强了系统对输入扰动的抑制能力和动态响应速度。通过仿真结果表明,该复合控制策略能够有效实现单位功率因数运行,大幅降低输入电流的总谐波畸变率(THD),同时确保直流母线电压具有优异的稳态精度和快速跟踪能力。本研究为高效率、高功率密度的PFC变换器设计提供了坚实的理论支撑和可靠的实践范例。; 适合人群:从事电力电子、电气自动化、新能源变换器研发的高校研究生、科研人员及企业工程师。; 使用场景及目标:①掌握图腾柱无桥PFC变换器的工作原理与建模方法;②深入理解平均电流控制、PI双闭环及前馈控制在电力电子系统中的综合应用;③学习使用Simulink进行电力电子变换器的系统级仿真与性能分析。; 阅读建议:建议读者结合文中提供的仿真模型,分模块(主电路、控制逻辑、调制环节)进行参数设置与仿真调试,重点关注电压环与电流环的动态响应、稳态精度以及THD指标的变化,以深化对控制策略的理解。

矢量(向量)数据库 Top 5

随着人工智能的不断发展,矢量数据库在塑造数据检索、处理和分析的未来方面的作用无疑将越来越大,有望为各个领域提供更复杂、更高效和更个性化的解决方案。这就是矢量数据库发挥作用的地方,为这些人工智能驱动的应用程序提供了一个高度优化的环境。领先的向量数据库,如 Pinecone,提供 Python、Node、Go、Java 等多种编程语言的 SDK,确保开发和管理的灵活性。随着数字时代将我们推进到一个以人工智能和机器学习为主导的时代,矢量数据库已经成为存储、搜索和分析高维数据矢量的不可或缺的工具。

一览无遗 3874

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)

内容概要:本文系统研究了基于序贯蒙特卡洛模拟法的配电网可靠性评估方法,重点聚焦于其在含分布式电源的复杂配电网中的应用。文章深入阐述了该方法的理论基础与实现流程,通过建立配电网元件的故障与修复过程的时间序列模型,模拟系统在长期运行中的状态演变,进而精确统计系统及负荷点的关键可靠性指标,如系统平均停电频率(SAIFI)、系统平均停电持续时间(SAIDI)、用户平均停电时间(CAIDI)等。研究依托Matlab平台完成了完整的仿真程序开发,并通过典型算例验证了所提方法的有效性与工程实用性。该方法能够充分考虑系统的时序特性与元件间的相关性,尤其适用于高比例分布式电源接入后带来的随机性与波动性较强的新型配电网可靠性分析。; 适合人群:具备电力系统分析基础知识和一定Matlab编程能力的高校研究生、科研机构研究人员,以及从事配电网规划、运行维护与风险管理的工程技术人员。; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的核心原理与具体实施步骤;②学习如何利用Matlab进行配电网时序仿真建模与可靠性指标的自动化计算;③为含分布式电源的现代配电网的规划设计、运行风险评估及韧性提升提供科学的量化分析工具与技术支撑。; 阅读建议:建议读者结合文中提供的Matlab代码实现,逐行调试并运行仿真程序,深入理解状态抽样、时间推进、故障遍历、指标累加等关键算法环节,并鼓励尝试将其应用于不同的网络拓扑结构或引入更多类型的分布式电源模型,以深化对方法适应性与扩展性的理解。

2024最佳5 个矢量数据库

我们最近看到了一系列令人印象深刻的矢量数据库,例如 Chroma、Pinecone、Weaviate、Faiss 和 Qdrant,每个数据库都提供独特的功能和创新。随着人工智能的不断发展,矢量数据库在塑造数据检索、处理和分析的未来方面的作用无疑将会增强,并有望在各个领域提供更复杂、高效和个性化的解决方案。这就是矢量数据库发挥作用的地方,为这些人工智能驱动的应用程序提供高度优化的环境。矢量数据库已成为强大的工具,可以在广阔的非结构化数据(如图像、视频和文本)中导航,而无需严重依赖人类生成的标签或标记。

FeelTouch Labs 1143

一文看懂英伟达A100、H100、A800、H800、H20

想要Deepseek私有化部署吗?无论是训练大型AI模型,还是进行高性能计算(HPC),还是Deepseek私有化部署,都需要强大的GPU支持。而英伟达(NVIDIA)作为全球领先的AI芯片制造商,推出了一系列高性能GPU,包括等,广泛应用于AI训练、推理、科学计算等领域。如果想搭建一个属于自己的算力中心,该如何选择合适的GPU?本文将带你详细了解这些GPU的特性,并指导你如何搭建算力中心。一、英伟达算力GPU系列解析1. A100:数据中心AI计算的奠基石:Ampere:6912:432。

【可全包】本人程序员,不需要做任何吹嘘,只是实在写点程序,写点文档,熟悉各类主流框架,SSM,SpringBoot,Flask,Djiango,Mysql,Sqlite,VUE,Uniapp等,各类程序设计专家,优质作者 2万+

西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序)

西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485) 西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序) 文章目录西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485)前言一、FreePort自由口通讯是什么?二、使用步骤1.模块参数定义2.定义FB功能块参数:3.程序代码如下(每天写代码100行,学不会你来找我):总结 前言 很长时间都没有更新了,主要是最近在学习罗克韦尔的STUDIO5000PLC编程软件,怎么说,和博

weixin_42940283的博客 1万+

EduRAG智能回答项目V1.0

本文介绍了基于企业私有数据构建RAG(检索增强生成)系统的完整流程。主要内容包括: 项目背景:针对大模型知识局限性和"幻觉"问题,提出两种解决方案——垂直领域微调和RAG问答系统,分析各自的优缺点及适用场景。 技术工具: 使用Ollama管理本地大模型 采用LangChain框架简化LLM应用开发 利用Milvus向量数据库存储和检索非结构化数据 系统实现: MySQL问答系统:基于BM25算法实现高频问答对检索 RAG系统:包含文档处理、向量存储、查询分类和策略选择等模块。

专注前端开发领域,深耕 Python AI Agent应用开发,热爱探索 Web 与人工智能的前沿技术。 270

用Charles抓包调试iOS应用?这份保姆级配置指南帮你绕过所有坑

本文提供了一份在Mac上使用Charles抓包调试iOS应用的保姆级配置指南。详细讲解了从Charles安装、Mac端代理设置、根证书安装,到iOS设备连接同一WiFi、配置代理以及最关键的系统证书信任等全流程步骤,并分享了SSL代理规则、断点调试等进阶技巧,帮助开发者高效定位和解决网络请求问题。

rice5的博客 641

AIGC专业全解析:从技术原理到实战应用的学习路线图

人工智能生成内容(AIGC)是当前技术领域的热点,其核心在于利用深度学习模型自动创造文本、图像、音频和视频等内容。从技术原理上看,它主要基于生成对抗网络、变分自编码器,尤其是当前主流的扩散模型,这些模型通过学习数据分布实现高质量内容生成。在工程实践中,PyTorch作为主流框架,结合Hugging Face等开源库,为模型开发与部署提供了强大支持。AIGC的技术价值在于极大提升了内容创作的效率与多样性,降低了专业门槛。其应用场景广泛,涵盖营销文案自动生成、游戏影视概念设计、代码辅助编程等多个领域。本文聚焦于

weixin_34357436的博客 345

自动化学报Ctex+texstudio配置方法

自动化学报Latex的模板win10使用方法(CTEX+texstudio)

zxy15924462502的博客 7379

删除win10电脑U盘使用记录

手工删除:和查看的方法类似,分三步,缺一不可,顺序也不能反! 第一步 设置环境变量,变量名为“devmgr_show_nonpresent_devices”,值为“1”。 第二步 打开设备管理器,勾上“查看”菜单中的“显示隐藏设备”。如果之前已经打开设备管理器,则要关了,重新打开。 第三步 清除“磁盘驱动器”、“存储卷”、“通用串行总线控制器”3个栏目下所有的灰色的图标,注意是所有!右键点击灰色图标,然后选择“卸载”。 成功 :结果USBSTOR 没有了 ...

qq_40544338的博客 2万+

人工智能世界观(认知篇)

本文系统梳理了人工智能(AI)的基础知识体系,重点解析了大模型(LLM)的核心原理、技术演进及应用边界。主要内容包括: AI基础认知:从规则驱动到数据驱动的范式转变,强调AI=数据+算法+算力的技术本质,区分了弱AI与通用AI(AGI)的能力差异。 技术发展史:回顾AI七十年发展,从符号主义、专家系统到深度学习的五次技术浪潮,重点分析Transformer架构如何推动大模型革命。 大模型原理:详解LLM的三大支柱(参数量/数据量/算力),揭示自回归生成和注意力机制的工作逻辑,对比GPT与BERT的技术路线差

轻舟已过万重山 560

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1152

一文带你了解HuggingFace Transformer 理论基础,Transformer 实战,十万字精读

在 Hugging Face 的库中,Pipeline(流水线)是最高层、最易用的推理 API。如果把直接调用 PyTorch 底层代码比作“驾驶手动挡赛车”(需要精细控制离合、油门和换挡),那么 Pipeline 就是一辆开箱即用的“全自动无人驾驶汽车”。你只需要输入目的地(文本),它就能直接把你送到终点(预测结果)。你不需要知道到底该用 BERT 还是 T5。你只需要告诉 Pipeline 你的任务目标文本生成、翻译、问答、图像分类),它就会自动为你匹配一套默认的最佳预训练模型和分词器。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 556

LTE信令流程及业务流程

eNB返回E-RAB建立响应消息,E-RAB建立列表信息中包含成功建立的承载信息,E-RAB建立失败列表消息中包含没有成功建立的承载消息。3)当下行数据达到时,网络侧先对UE进行寻呼,随后UE发起随机接入过程,并发起service request过程。用户面:S-GW向eNB发送承载建立请求,包含(IMSI, QoS, TFT, TEID, LBI等)控制面:MME向eNB发送E-RAB建立请求,包含E-RAB ID,QoS,S-GW TEID。3)在S1接口上建立S1承载,在Uu接口上建立数据无线承载。

qq_44390640的博客 4584

maya导入导出bvh 自动 脚本

maya打开bvh脚本

jacke121的专栏 1551

哈佛 CS249r:机器学习系统(十一)

用于社会公益的人工智能代表了机器学习技术最具挑战性但最有回报的应用之一,它需要系统在严重资源限制下有效运行,同时为服务不足的社区带来有意义的冲击。构建具有社会影响的人工智能是信任度的终极考验。这些系统必须对其服务的社区负责(第十七章),在易受攻击的环境中防止滥用(第十五章),足够强大(第十六章)以应对不可预测的现实世界条件,并且足够可持续(第十八章),能够在有限的资源上运行多年。本章中提出的模式设计本质上是在约束下的信任架构。

龙哥盟 170

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python读写矢量数据(2)矢量数据写入(属性数据)——Python地理数据处理学习分享

主要介绍矢量数据(属性部分,以后介绍几何)写入,如需要读取,请查看上篇。

remote_giser的博客 2280

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

互联网地图矢量数据Python获取方法

转载自慧天地的微信公众号 https://mp.weixin.qq.com/s?__biz=MzIwNDE1NjM2NA==&amp;mid=2652026878&amp;idx=6&amp;sn=ba2f7ceb3c74e8efd3ff09fb2e052aec&amp;chksm=8d226b5dba55e24b5b8e377b24115c54e0a1784f752999b227cb1f950...

GIS骆驼的GIS博客 9172

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python地学分析 — 矢量数据集介绍

欢迎关注博主的微信公众号:“智能遥感”。 该公众号将为您奉上Python地学分析、爬虫、数据分析、Web开发、机器学习、深度学习等热门源代码。 什么叫矢量数据,在这里,小编先给大家普及一下! 地图上的要素都绘制为几何对象——点,线(包含多边形)、面。这些类型的数据(地理要素都是不同的对象)称为矢量数据集。 在最基本的矢量数据中,地理要素以离散几何形式表示,特别是点,线、面。具有不同边界...

一叶知秋的博客 2674

使用python添加矢量数据到mxd

1、添加shp数据到mxd # -*-coding:utf-8-*- import arcpy mxd = arcpy.mapping.MapDocument(r"E:\testmxd\testmxd.mxd") df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] theShape = r"E:\testmxd\江夏区.shp" addL...

gislaozhang 1989
上一篇: 如何在7天内完成高质量微调数据准备?资深专家亲授秘诀
下一篇: 【稀缺实战经验】:资深架构师亲授Python多模型协同开发避坑清单
FastCompile
博客等级 码龄1年 164粉丝 2015原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值