# migrations

dir: sysdb
filename: 00001-collections.sqlite.sql
hash: 38352d725ad1c16074fac420b22b4633
sql:
CREATE TABLE collections (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    topic TEXT NOT NULL,
    UNIQUE (name)
);

CREATE TABLE collection_metadata (
    collection_id TEXT REFERENCES collections(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (collection_id, key)
);


dir: sysdb
filename: 00002-segments.sqlite.sql
hash: 2913cb6a503055a95f625448037e8912
sql:
CREATE TABLE segments (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    scope TEXT NOT NULL,
    topic TEXT,
    collection TEXT REFERENCES collection(id)
);

CREATE TABLE segment_metadata (
    segment_id TEXT  REFERENCES segments(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (segment_id, key)
);


dir: sysdb
filename: 00004-tenants-databases.sqlite.sql
hash: 048867ce8fcdefe4023c7110e4433591
sql:
CREATE TABLE IF NOT EXISTS tenants (
    id TEXT PRIMARY KEY,
    UNIQUE (id)
);

CREATE TABLE IF NOT EXISTS databases (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per tenant
    tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    UNIQUE (tenant_id, name) -- Ensure that a tenant has only one database with a given name
);

CREATE TABLE IF NOT EXISTS collections_tmp (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per database
    topic TEXT NOT NULL,
    dimension INTEGER,
    database_id TEXT NOT NULL REFERENCES databases(id) ON DELETE CASCADE,
    UNIQUE (name, database_id)
);

-- Create default tenant and database
INSERT OR REPLACE INTO tenants (id) VALUES ('default_tenant'); -- The default tenant id is 'default_tenant' others are UUIDs
INSERT OR REPLACE INTO databases (id, name, tenant_id) VALUES ('00000000-0000-0000-0000-000000000000', 'default_database', 'default_tenant');

INSERT OR REPLACE INTO collections_tmp (id, name, topic, dimension, database_id)
    SELECT id, name, topic, dimension, '00000000-0000-0000-0000-000000000000' FROM collections;
DROP TABLE collections;
ALTER TABLE collections_tmp RENAME TO collections;


dir: sysdb
filename: 00005-remove-topic.sqlite.sql
hash: b1367c826b8fba5f96f27befdc1d42d2
sql:
-- Remove the topic column from the Collections and Segments tables

ALTER TABLE collections DROP COLUMN topic;
ALTER TABLE segments DROP COLUMN topic;


dir: sysdb
filename: 00006-collection-segment-metadata.sqlite.sql
hash: 4eea7468935bf25d4604a0fed2366116
sql:
-- SQLite does not support adding check with alter table, as a result, adding a check
-- involve creating a new table and copying the data over. It is over kill with adding
-- a boolean type column. The application write to the table needs to ensure the data
-- integrity.
ALTER TABLE collection_metadata ADD COLUMN bool_value INTEGER;
ALTER TABLE segment_metadata ADD COLUMN bool_value INTEGER;


dir: sysdb
filename: 00007-collection-config.sqlite.sql
hash: 1c7e63bba346a42a18b6ab7f1c989bed
sql:
-- Stores collection configuration dictionaries.
ALTER TABLE collections ADD COLUMN config_json_str TEXT;


dir: sysdb
filename: 00008-maintenance-log.sqlite.sql
hash: 0a0e7e93111a01789addf64961c6127c
sql:
-- Records when database maintenance operations are performed.
-- At time of creation, this table is only used to record vacuum operations.
CREATE TABLE maintenance_log (
  id INT PRIMARY KEY,
  timestamp INT NOT NULL,
  operation TEXT NOT NULL
);


dir: sysdb
filename: 00009-segment-collection-not-null.sqlite.sql
hash: 054355aef9e63702bf54ea29e61563f1
sql:
-- This makes segments.collection non-nullable.
CREATE TABLE segments_temp (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    scope TEXT NOT NULL,
    collection TEXT REFERENCES collection(id) NOT NULL
);

INSERT INTO segments_temp SELECT * FROM segments;
DROP TABLE segments;
ALTER TABLE segments_temp RENAME TO segments;


dir: sysdb
filename: 00010-collection-schema.sqlite.sql
hash: 5c3a5ac4b79df76799b4721827ed5e1d
sql:
-- Stores collection schema as stringified json
ALTER TABLE collections ADD COLUMN schema_str TEXT;


dir: metadb
filename: 00001-embedding-metadata.sqlite.sql
hash: 2b4cf52c4bb2676e21d6860a4409f856
sql:
CREATE TABLE embeddings (
    id INTEGER PRIMARY KEY,
    segment_id TEXT NOT NULL,
    embedding_id TEXT NOT NULL,
    seq_id BLOB NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE (segment_id, embedding_id)
);

CREATE TABLE embedding_metadata (
    id INTEGER REFERENCES embeddings(id),
    key TEXT NOT NULL,
    string_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (id, key)
);

CREATE TABLE max_seq_id (
    segment_id TEXT PRIMARY KEY,
    seq_id BLOB NOT NULL
);

CREATE VIRTUAL TABLE embedding_fulltext USING fts5(id, string_value);


dir: metadb
filename: 00002-embedding-metadata.sqlite.sql
hash: 12a570f7121b3a8ce750a2a7c36da20f
sql:
-- SQLite does not support adding check with alter table, as a result, adding a check
-- involve creating a new table and copying the data over. It is over kill with adding
-- a boolean type column. The application write to the table needs to ensure the data
-- integrity.
ALTER TABLE embedding_metadata ADD COLUMN bool_value INTEGER


dir: metadb
filename: 00003-full-text-tokenize.sqlite.sql
hash: f97ad6334aeaa8f419f01110b648b97a
sql:
CREATE VIRTUAL TABLE embedding_fulltext_search USING fts5(string_value, tokenize='trigram');
INSERT INTO embedding_fulltext_search (rowid, string_value) SELECT rowid, string_value FROM embedding_metadata;
DROP TABLE embedding_fulltext;


dir: metadb
filename: 00004-metadata-indices.sqlite.sql
hash: fb36603a45ee2cd0254cef3ef86585e8
sql:
CREATE INDEX IF NOT EXISTS embedding_metadata_int_value ON embedding_metadata (key, int_value) WHERE int_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_float_value ON embedding_metadata (key, float_value) WHERE float_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_string_value ON embedding_metadata (key, string_value) WHERE string_value IS NOT NULL;


dir: metadb
filename: 00005-max-seq-id-int.sqlite.sql
hash: 0e9de46758761b373ce682925edcc326
sql:
ALTER TABLE max_seq_id ADD COLUMN int_seq_id INTEGER;

-- Convert 8 byte wide big-endian integer as blob to native 64 bit integer.
-- Adapted from https://stackoverflow.com/a/70296198.
UPDATE max_seq_id SET int_seq_id = (
  SELECT (
       (instr('123456789ABCDEF', substr(hex(seq_id), -1 , 1)) <<  0)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -2 , 1)) <<  4)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -3 , 1)) <<  8)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -4 , 1)) << 12)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -5 , 1)) << 16)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -6 , 1)) << 20)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -7 , 1)) << 24)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -8 , 1)) << 28)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -9 , 1)) << 32)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -10, 1)) << 36)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -11, 1)) << 40)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -12, 1)) << 44)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -13, 1)) << 48)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -14, 1)) << 52)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -15, 1)) << 56)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -16, 1)) << 60)
    )
);

ALTER TABLE max_seq_id DROP COLUMN seq_id;
ALTER TABLE max_seq_id RENAME COLUMN int_seq_id TO seq_id;


dir: embeddings_queue
filename: 00001-embeddings.sqlite.sql
hash: d3755dfd232be8e8301f4d7fcfb3a486
sql:
CREATE TABLE embeddings_queue (
    seq_id INTEGER PRIMARY KEY,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    operation INTEGER NOT NULL,
    topic TEXT NOT NULL,
    id TEXT NOT NULL,
    vector BLOB,
    encoding TEXT,
    metadata TEXT
);


# collections

id: f24ded99-0fa2-4d82-8958-55665d200889
name: langchain
database_id: 00000000-0000-0000-0000-000000000000
config_json_str: {}
schema_str:
{"defaults":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}},"float_list":{"vector_index":{"enabled":false,"config":{"space":"l2","hnsw":{"ef_construction":100,"max_neighbors":16,"ef_search":100,"num_threads":24,"batch_size":100,"sync_threshold":1000,"resize_factor":1.2}}}},"sparse_vector":{"sparse_vector_index":{"enabled":false,"config":{"embedding_function":{"type":"unknown"},"bm25":false}}},"int":{"int_inverted_index":{"enabled":true,"config":{}}},"float":{"float_inverted_index":{"enabled":true,"config":{}}},"bool":{"bool_inverted_index":{"enabled":true,"config":{}}}},"keys":{"producer":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"document_id":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"title":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"chunk_id":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"creationdate":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"total_pages":{"int":{"int_inverted_index":{"enabled":true,"config":{}}}},"#document":{"string":{"fts_index":{"enabled":true,"config":{}},"string_inverted_index":{"enabled":false,"config":{}}}},"source":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"chunk_index":{"int":{"int_inverted_index":{"enabled":true,"config":{}}}},"page":{"int":{"int_inverted_index":{"enabled":true,"config":{}}}},"#embedding":{"float_list":{"vector_index":{"enabled":true,"config":{"space":"l2","source_key":"#document","hnsw":{"ef_construction":100,"max_neighbors":16,"ef_search":100,"num_threads":24,"batch_size":100,"sync_threshold":1000,"resize_factor":1.2}}}}},"page_label":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"knowledge_base_id":{"int":{"int_inverted_index":{"enabled":true,"config":{}}}},"creator":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"moddate":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}}}}


# embedding_metadata

key: chroma:document
string_value:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - https://repo.anaconda.com/pkgs/msys2


key: source
string_value:
C:\DrGraph\TH_Backend\data\uploads\kb_15\27946451-bd48-44e8-bd99-8b72e2cd8bcb_产品单页_M8004ML30_中性中文版.pdf


key: source
string_value:
C:\DrGraph\TH_Backend\data\uploads\kb_15\397f4353-dc4d-4d5a-90d8-22dcc7e628a2_产品单页_M8004ML30_中性中文版.pdf


# embeddings_queue

created_at: 2025-12-25 09:21:16
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 4fb3c34b-026f-4797-8e98-e35f83946103
encoding: FLOAT32
metadata:
{"chunk_index":0,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\5aa2769e-6ed5-4ed0-b4ac-bff6fb8f1d8f_新建 文本文档.txt","knowledge_base_id":15,"chunk_id":"15_96_0","document_id":"96","chroma:document":"- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/\n  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/\n  - https://repo.anaconda.com/pkgs/main\n  - https://repo.anaconda.com/pkgs/r\n  - https://repo.anaconda.com/pkgs/msys2"}


created_at: 2025-12-25 09:21:17
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: c654184c-9490-4b36-8ed5-fb221e674734
encoding: FLOAT32
metadata:
{"chunk_id":"15_97_0","chunk_index":0,"knowledge_base_id":15,"chroma:document":"1 报告图片放大\n2 统筹生成的方案里面，文字 任务改成方案\n3 首页    应急返回首页后，左右面板的背景色要去掉","source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\727efcbb-dee3-4ede-9cbc-171a4fcfd602_修改点.txt","document_id":"97"}


created_at: 2025-12-25 09:21:17
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 22970e0c-2750-442f-a335-6d352a045f02
encoding: FLOAT32
metadata:
{"chunk_id":"15_98_0","document_id":"98","chunk_index":0,"knowledge_base_id":15,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\0cae7f37-4b84-4dba-8117-c31653c9ca70_一网统飞.txt","chroma:document":"1  拆模块\n2  数据整理"}


created_at: 2025-12-25 09:24:10
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 50a8d5e6-f4ba-4187-8f85-1ed299aebfc8
encoding: FLOAT32
metadata:
{"page":1,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\27946451-bd48-44e8-bd99-8b72e2cd8bcb_产品单页_M8004ML30_中性中文版.pdf","chunk_index":0,"knowledge_base_id":15,"chunk_id":"15_99_0","chroma:document":"-40℃ ~ +50℃\n产品功耗 地面端: ≤14W\n调制方式 QPSK/16QAM/64QAM\n空地距离 30~50km（通视） 地地距离 2-3km（通视）\n路由更新时间 ≤1s","document_id":"99"}


created_at: 2025-12-25 09:24:10
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 444b0050-8673-46e4-bd75-6d0b441193df
encoding: FLOAT32
metadata:
{"knowledge_base_id":15,"chunk_index":1,"chunk_id":"15_99_1","chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\27946451-bd48-44e8-bd99-8b72e2cd8bcb_产品单页_M8004ML30_中性中文版.pdf","document_id":"99","page":2}


created_at: 2025-12-26 02:39:54
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 4f9a30a4-ef70-4d5d-a1ca-279e73fbb6e8
encoding: FLOAT32
metadata:
{"chroma:document":"≤1s路由更新时间\n2-3km（通视）地地距离30~50km（通视）空地距离\nQPSK/16QAM/64QAM调制方式\n地面端: ≤14W产品功耗\n-40℃ ~ +50℃","chunk_id":"15_100_0","page_label":"1","total_pages":2,"creationdate":"2025-02-14T11:06:25+09:00","title":"专项产品单页_M8004ML30_中性中文版","chunk_index":0,"document_id":"100","producer":"Adobe PDF library 16.03","creator":"Adobe Illustrator 26.0 (Windows)","knowledge_base_id":15,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\397f4353-dc4d-4d5a-90d8-22dcc7e628a2_产品单页_M8004ML30_中性中文版.pdf","moddate":"2025-02-14T11:06:25+08:00","page":0}


created_at: 2025-12-26 02:39:54
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: ce56d462-ce02-4aba-bb63-e47fe5d79ad5
encoding: FLOAT32
metadata:
{"title":"专项产品单页_M8004ML30_中性中文版","chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","chunk_index":1,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\397f4353-dc4d-4d5a-90d8-22dcc7e628a2_产品单页_M8004ML30_中性中文版.pdf","creationdate":"2025-02-14T11:06:25+09:00","document_id":"100","moddate":"2025-02-14T11:06:25+08:00","total_pages":2,"chunk_id":"15_100_1","producer":"Adobe PDF library 16.03","creator":"Adobe Illustrator 26.0 (Windows)","knowledge_base_id":15,"page":1,"page_label":"2"}


created_at: 2025-12-26 02:41:57
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 6bd8127e-9c01-44dd-badd-f6c5133a29ee
encoding: FLOAT32
metadata:
{"producer":"Adobe PDF library 16.03","chunk_index":0,"moddate":"2025-02-14T11:06:25+08:00","total_pages":2,"creationdate":"2025-02-14T11:06:25+09:00","page":0,"page_label":"1","knowledge_base_id":15,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\599ea508-c35f-408d-b452-56efed9118a0_产品单页_M8004ML30_中性中文版.pdf","document_id":"101","creator":"Adobe Illustrator 26.0 (Windows)","title":"专项产品单页_M8004ML30_中性中文版","chroma:document":"≤1s路由更新时间\n2-3km（通视）地地距离30~50km（通视）空地距离\nQPSK/16QAM/64QAM调制方式\n地面端: ≤14W产品功耗\n-40℃ ~ +50℃","chunk_id":"15_101_0"}


created_at: 2025-12-26 02:41:57
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: d76cc4ec-6f13-42e9-9910-cce9a5395009
encoding: FLOAT32
metadata:
{"producer":"Adobe PDF library 16.03","page":1,"page_label":"2","source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\599ea508-c35f-408d-b452-56efed9118a0_产品单页_M8004ML30_中性中文版.pdf","chunk_index":1,"total_pages":2,"creator":"Adobe Illustrator 26.0 (Windows)","document_id":"101","chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","creationdate":"2025-02-14T11:06:25+09:00","title":"专项产品单页_M8004ML30_中性中文版","knowledge_base_id":15,"moddate":"2025-02-14T11:06:25+08:00","chunk_id":"15_101_1"}


created_at: 2025-12-26 02:47:06
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: dda65931-2ec5-4357-bc80-bcb3e82271ba
encoding: FLOAT32
metadata:
{"knowledge_base_id":15,"producer":"Adobe PDF library 16.03","creator":"Adobe Illustrator 26.0 (Windows)","document_id":"102","moddate":"2025-02-14T11:06:25+08:00","page_label":"1","page":0,"chunk_id":"15_102_0","chunk_index":0,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\b164aa0d-ed12-40d9-b4d1-e7b8d9549abf_产品单页_M8004ML30_中性中文版.pdf","chroma:document":"≤1s路由更新时间\n2-3km（通视）地地距离30~50km（通视）空地距离\nQPSK/16QAM/64QAM调制方式\n地面端: ≤14W产品功耗\n-40℃ ~ +50℃","title":"专项产品单页_M8004ML30_中性中文版","creationdate":"2025-02-14T11:06:25+09:00","total_pages":2}


created_at: 2025-12-26 02:47:06
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: c36d27ec-2b50-4125-afc1-3efca0341b6d
encoding: FLOAT32
metadata:
{"chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","chunk_id":"15_102_1","total_pages":2,"producer":"Adobe PDF library 16.03","creator":"Adobe Illustrator 26.0 (Windows)","moddate":"2025-02-14T11:06:25+08:00","title":"专项产品单页_M8004ML30_中性中文版","chunk_index":1,"creationdate":"2025-02-14T11:06:25+09:00","page_label":"2","page":1,"knowledge_base_id":15,"document_id":"102","source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\b164aa0d-ed12-40d9-b4d1-e7b8d9549abf_产品单页_M8004ML30_中性中文版.pdf"}


created_at: 2025-12-26 03:19:49
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: a6b5c5df-98a3-45d5-935d-5ff97e45f7a6
encoding: FLOAT32
metadata:
{"document_id":"103","chunk_id":"15_103_0","chroma:document":"≤1s路由更新时间\n2-3km（通视）地地距离30~50km（通视）空地距离\nQPSK/16QAM/64QAM调制方式\n地面端: ≤14W产品功耗\n-40℃ ~ +50℃","page":0,"moddate":"2025-02-14T11:06:25+08:00","creationdate":"2025-02-14T11:06:25+09:00","page_label":"1","source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\67fc056d-3d0a-43b7-97af-76d18ea8cfe8_产品单页_M8004ML30_中性中文版.pdf","total_pages":2,"producer":"Adobe PDF library 16.03","chunk_index":0,"creator":"Adobe Illustrator 26.0 (Windows)","knowledge_base_id":15,"title":"专项产品单页_M8004ML30_中性中文版"}


created_at: 2025-12-26 03:19:49
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 5a457460-f243-430d-aba8-993e26030fc4
encoding: FLOAT32
metadata:
{"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\67fc056d-3d0a-43b7-97af-76d18ea8cfe8_产品单页_M8004ML30_中性中文版.pdf","total_pages":2,"moddate":"2025-02-14T11:06:25+08:00","chunk_index":1,"chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","creationdate":"2025-02-14T11:06:25+09:00","producer":"Adobe PDF library 16.03","title":"专项产品单页_M8004ML30_中性中文版","creator":"Adobe Illustrator 26.0 (Windows)","knowledge_base_id":15,"chunk_id":"15_103_1","page_label":"2","document_id":"103","page":1}


created_at: 2025-12-26 05:44:57
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 169b8330-2fd1-47dc-b098-16efe62fde94
encoding: FLOAT32
metadata:
{"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\a4637ae3-87b0-417a-85ce-466fe98c5766_产品单页_M8004ML30_中性中文版.pdf","title":"专项产品单页_M8004ML30_中性中文版","producer":"Adobe PDF library 16.03","page":0,"knowledge_base_id":15,"chunk_index":0,"creationdate":"2025-02-14T11:06:25+09:00","document_id":"104","page_label":"1","creator":"Adobe Illustrator 26.0 (Windows)","chunk_id":"15_104_0","moddate":"2025-02-14T11:06:25+08:00","chroma:document":"≤1s路由更新时间\n2-3km（通视）地地距离30~50km（通视）空地距离\nQPSK/16QAM/64QAM调制方式\n地面端: ≤14W产品功耗\n-40℃ ~ +50℃","total_pages":2}


created_at: 2025-12-26 05:44:57
topic: persistent://default/default/f24ded99-0fa2-4d82-8958-55665d200889
id: 4938a68a-2c54-410c-9c16-57937d958f08
encoding: FLOAT32
metadata:
{"total_pages":2,"source":"C:\\DrGraph\\TH_Backend\\data\\uploads\\kb_15\\a4637ae3-87b0-417a-85ce-466fe98c5766_产品单页_M8004ML30_中性中文版.pdf","creationdate":"2025-02-14T11:06:25+09:00","moddate":"2025-02-14T11:06:25+08:00","title":"专项产品单页_M8004ML30_中性中文版","producer":"Adobe PDF library 16.03","knowledge_base_id":15,"page":1,"chroma:document":"2．专有空口协议，底层加密，\n安全可靠\n4．支持300km/h时速，满足\n各类高速环境应用\n6．应用广泛，适合无人机、\n机器人、车辆、安防等行业","document_id":"104","chunk_id":"15_104_1","chunk_index":1,"creator":"Adobe Illustrator 26.0 (Windows)","page_label":"2"}


