Skip to content

Commit 75541c2

Browse files
💬Generate LLM translations (#2181)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: z <[email protected]>
1 parent b0ac38b commit 75541c2

File tree

4 files changed

+82
-199
lines changed

4 files changed

+82
-199
lines changed
Lines changed: 48 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,196 +1,79 @@
1-
---
2-
title: 'Databend AI 功能'
3-
sidebar_label: 'AI 功能'
4-
---
1+
# Databend AI 功能
52

6-
本指南邀请您探索 Databend 的内置函数与机器学习融合的领域。通过 SQL 查询轻松转换您的数据分析,揭示一系列自然语言任务 - 从理解文档到完成文本等等
3+
本指南介绍了 Databend 的内置 AI 函数,这些函数通过 SQL 查询实现自然语言处理任务,包括文本理解、生成等
74

8-
## 数据、隐私和安全
5+
:::warning
6+
数据隐私和安全
97

10-
Databend 依赖 [Azure OpenAI Service](https://azure.microsoft.com/en-us/products/ai-services/openai-service) 进行嵌入和文本补全,这意味着您的数据将被发送到 Azure OpenAI Service。使用这些功能时请务必谨慎
8+
Databend 使用 Azure OpenAI Service 进行嵌入和文本补全。当您使用这些函数时,您的数据将被发送到 Azure OpenAI。这些功能在 Databend Cloud 上默认可用
119

12-
这些功能在 [Databend Cloud](https://databend.com) 上默认可用,使用我们的 Azure OpenAI 密钥。**如果您使用它们,您承认您的数据将被发送到 Azure OpenAI Service**,并且您同意 [Azure OpenAI 数据隐私](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/data-privacy)
10+
**通过使用这些函数,您承认您的数据将被发送到 Azure OpenAI Service** 并同意 [Azure OpenAI 数据隐私](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/data-privacy) 条款。
11+
:::
1312

14-
## 什么是嵌入 (Embeddings)?
15-
16-
嵌入是文本数据的向量表示,它捕获原始文本的语义和上下文含义。它们可用于比较和分析各种自然语言处理任务中的文本,例如文档相似性、聚类和推荐系统。
17-
18-
为了说明嵌入的工作原理,让我们考虑一个简单的例子。假设我们有以下句子:
19-
1. `"The cat sat on the mat."`
20-
2. `"The dog sat on the rug."`
21-
3. `"The quick brown fox jumped over the lazy dog."`
22-
23-
当为这些句子创建嵌入时,模型会将文本转换为高维向量,使得相似的句子在向量空间中更接近。
24-
25-
例如,句子 1 和句子 2 的嵌入将彼此更接近,因为它们共享相似的结构和含义(都涉及动物坐在某物上)。另一方面,句子 3 的嵌入将与句子 1 和句子 2 的嵌入相距更远,因为它具有不同的结构和含义。
26-
27-
嵌入可能如下所示(为说明目的而简化):
13+
## 关键 AI 函数
2814

29-
1. `[0.2, 0.3, 0.1, 0.7, 0.4]`
30-
2. `[0.25, 0.29, 0.11, 0.71, 0.38]`
31-
3. `[-0.1, 0.5, 0.6, -0.3, 0.8]`
15+
| 函数 | 描述 | 何时使用 |
16+
|----------|-------------|------------|
17+
| [ai_text_completion](/sql/sql-functions/ai-functions/ai-text-completion) | 根据提示生成文本 | • 内容生成<br/>• 问题解答<br/>• 摘要<br/>• 文本扩展 |
18+
| [ai_embedding_vector](/sql/sql-functions/ai-functions/ai-embedding-vector) | 将文本转换为向量表示 | • 语义搜索<br/>• 文档相似度<br/>• 内容推荐<br/>• 文本分类 |
19+
| [cosine_distance](/sql/sql-functions/vector-distance-functions/vector-cosine-distance) | 计算向量之间的相似度 | • 查找相似文档<br/>• 对搜索结果进行排序<br/>• 衡量文本相似度 |
3220

33-
在这个简化的例子中,您可以看到句子 1 和句子 2 的嵌入在向量空间中彼此更接近,而句子 3 的嵌入则更远。这说明了嵌入如何捕获语义关系,并可用于比较和分析文本数据。
34-
35-
## 什么是向量数据库?
36-
37-
通常,嵌入向量存储在专门的向量数据库中,如 milvus、pinecone、qdrant 或 weaviate。Databend 还可以使用 ARRAY(FLOAT32) 数据类型存储嵌入向量,并使用 SQL 中的 cosine_distance 函数执行相似性计算。要使用 Databend 为文本文档创建嵌入,您可以直接在 SQL 查询中使用内置的 `ai_embedding_vector` 函数。
21+
## 什么是嵌入 (Embeddings)?
3822

39-
## Databend AI 函数
23+
嵌入是文本的向量表示,可以捕获语义。相似的文本在嵌入空间中具有更接近的向量,从而可以进行比较和分析,以执行诸如文档相似性和聚类之类的任务。
4024

41-
Databend 提供了内置的 AI 函数,用于各种自然语言处理任务。本文档中涵盖的主要函数包括:
25+
## Databend 中的向量存储
4226

43-
- [ai_embedding_vector](/sql/sql-functions/ai-functions/ai-embedding-vector): 为文本文档生成嵌入。
44-
- [ai_text_completion](/sql/sql-functions/ai-functions/ai-text-completion): 根据给定的提示生成文本补全。
45-
- [cosine_distance](/sql/sql-functions/vector-distance-functions/vector-cosine-distance): 计算两个嵌入之间的余弦距离。
27+
Databend 可以使用 `ARRAY(FLOAT NOT NULL)` 数据类型存储嵌入向量,并直接在 SQL 中使用 cosine_distance 函数执行相似度计算。
4628

47-
## 生成嵌入
29+
## 示例:文档相似度搜索
4830

49-
让我们创建一个表来存储一些示例文本文档及其相应的嵌入:
5031
```sql
32+
-- 创建一个用于存储文档的表
5133
CREATE TABLE articles (
5234
id INT,
5335
title VARCHAR,
5436
content VARCHAR,
55-
embedding ARRAY(FLOAT32)
37+
embedding ARRAY(FLOAT NOT NULL)
5638
);
57-
```
5839

59-
现在,让我们将一些示例文档插入到表中:
60-
```sql
40+
-- 插入带有嵌入的文档
6141
INSERT INTO articles (id, title, content, embedding)
6242
VALUES
63-
(1, 'Python for Data Science', 'Python is a versatile programming language widely used in data science...', ai_embedding_vector('Python is a versatile programming language widely used in data science...')),
64-
(2, 'Introduction to R', 'R is a popular programming language for statistical computing and graphics...', ai_embedding_vector('R is a popular programming language for statistical computing and graphics...')),
65-
(3, 'Getting Started with SQL', 'Structured Query Language (SQL) is a domain-specific language used for managing relational databases...', ai_embedding_vector('Structured Query Language (SQL) is a domain-specific language used for managing relational databases...'));
66-
```
43+
(1, 'Python for Data Science', 'Python 是一种通用的编程语言...',
44+
ai_embedding_vector('Python 是一种通用的编程语言...')),
45+
(2, 'Introduction to R', 'R 是一种流行的统计编程语言...',
46+
ai_embedding_vector('R 是一种流行的统计编程语言...'));
6747

68-
## 计算余弦距离
69-
70-
现在,让我们使用 [cosine_distance](/sql/sql-functions/vector-distance-functions/vector-cosine-distance) 函数找到与给定查询最相似的文档:
71-
```sql
48+
-- 查找与查询相似的文档
7249
SELECT
73-
id,
74-
title,
75-
content,
76-
cosine_distance(embedding, ai_embedding_vector('How to use Python in data analysis?')) AS similarity
77-
FROM
78-
articles
79-
ORDER BY
80-
similarity ASC
81-
LIMIT 3;
82-
```
83-
84-
结果:
85-
```sql
86-
+------+--------------------------+---------------------------------------------------------------------------------------------------------+------------+
87-
| id | title | content | similarity |
88-
+------+--------------------------+---------------------------------------------------------------------------------------------------------+------------+
89-
| 1 | Python for Data Science | Python is a versatile programming language widely used in data science... | 0.1142081 |
90-
| 2 | Introduction to R | R is a popular programming language for statistical computing and graphics... | 0.18741018 |
91-
| 3 | Getting Started with SQL | Structured Query Language (SQL) is a domain-specific language used for managing relational databases... | 0.25137568 |
92-
+------+--------------------------+---------------------------------------------------------------------------------------------------------+------------+
50+
id, title, content,
51+
cosine_distance(embedding, ai_embedding_vector('如何在数据分析中使用 Python?')) AS similarity
52+
FROM articles
53+
ORDER BY similarity ASC
54+
LIMIT 3;
9355
```
9456

95-
## 生成文本补全
96-
97-
Databend 还支持文本补全函数 [ai_text_completion](/sql/sql-functions/ai-functions/ai-text-completion)
98-
99-
例如,从上面的输出中,我们选择余弦距离最小的文档:“Python is a versatile programming language widely used in data science...”。
100-
101-
我们可以将其用作上下文,并将原始问题提供给 [ai_text_completion](/sql/sql-functions/ai-functions/ai-text-completion) 函数以生成补全:
57+
## 示例:文本补全
10258

10359
```sql
104-
SELECT ai_text_completion('Python is a versatile programming language widely used in data science...') AS completion;
60+
-- 为提示生成补全
61+
SELECT ai_text_completion('用三点解释云数仓的优势:') AS completion;
62+
63+
-- 结果可能是:
64+
-- 1. 可扩展性:云数仓可以根据需求轻松地向上或向下扩展,
65+
-- 无需预先进行容量规划。
66+
-- 2. 成本效益:按需付费的定价模式降低了资本支出,
67+
-- 并允许企业仅为其使用的资源付费。
68+
-- 3. 可访问性:云数仓使团队可以从任何地方访问数据,
69+
-- 从而促进远程工作和全球协作。
10570
```
10671

107-
结果:
108-
```sql
109-
110-
completion: and machine learning. It is known for its simplicity, readability, and ease of use. Python has a vast collection of libraries and frameworks that make it easy to perform complex tasks such as data analysis, visualization, and machine learning. Some of the popular libraries used in data science include NumPy, Pandas, Matplotlib, and Scikit-learn. Python is also used in web development, game development, and automation. Its popularity and versatility make it a valuable skill for programmers and data scientists.
111-
```
72+
## 构建 AI 问答系统
11273

113-
您可以在我们的 [Databend Cloud](https://databend.com) 上体验这些功能,您可以在这里注册免费试用版并立即开始使用这些 AI 功能。
74+
您可以使用 Databend 创建一个简单的问答系统,方法是:
75+
1. 存储带有嵌入的文档
76+
2. 查找与问题相关的文档
77+
3. 使用文本补全生成答案
11478

115-
Databend 的 AI 功能旨在易于使用,即使对于不熟悉机器学习或自然语言处理的用户也是如此。借助 Databend,您可以快速轻松地将强大的 AI 功能添加到您的 SQL 查询中,并将您的数据分析提升到一个新的水平。
116-
117-
## 使用 Databend 构建 AI 问答系统
118-
119-
我们利用 [Databend Cloud](https://databend.com) 和 AI 函数为我们的文档构建了一个 AI 问答系统。
120-
121-
以下是构建它的分步指南:
122-
123-
### 步骤 1:创建表
124-
125-
首先,创建一个具有以下结构的表来存储文档信息和嵌入:
126-
```sql
127-
CREATE TABLE doc (
128-
path VARCHAR,
129-
content VARCHAR,
130-
embedding ARRAY(FLOAT32 NOT NULL)
131-
);
132-
```
133-
134-
### 步骤 2:插入原始数据
135-
136-
将示例数据插入到表中,包括每个文档的路径和内容:
137-
```sql
138-
INSERT INTO doc (path, content) VALUES
139-
('ai-function', 'ai_embedding_vector, ai_text_completion, cosine_distance'),
140-
('string-function', 'ASCII, BIN, CHAR_LENGTH');
141-
```
142-
143-
### 步骤 3:生成嵌入
144-
145-
更新表以使用 [ai_embedding_vector](/sql/sql-functions/ai-functions/ai-embedding-vector) 函数为内容生成嵌入:
146-
```sql
147-
UPDATE doc SET embedding = ai_embedding_vector(content)
148-
WHERE LENGTH(embedding) = 0;
149-
```
150-
151-
### 步骤 4:提问并检索相关答案
152-
153-
```sql
154-
-- 将问题定义为 CTE(公共表表达式)
155-
WITH question AS (
156-
SELECT 'Tell me the ai functions' AS q
157-
),
158-
-- 计算问题的嵌入向量
159-
question_embedding AS (
160-
SELECT ai_embedding_vector((SELECT q FROM question)) AS q_vector
161-
),
162-
-- 检索前 3 个最相关的文档
163-
top_3_docs AS (
164-
SELECT content,
165-
cosine_distance((SELECT q_vector FROM question_embedding), embedding) AS dist
166-
FROM doc
167-
ORDER BY dist ASC
168-
LIMIT 3
169-
),
170-
-- 合并前 3 个文档的内容
171-
combined_content AS (
172-
SELECT string_agg(content, ' ') AS aggregated_content
173-
FROM top_3_docs
174-
),
175-
-- 连接自定义提示、合并的内容和原始问题
176-
prompt AS (
177-
SELECT CONCAT(
178-
'Utilizing the sections provided from the Databend documentation, answer the questions to the best of your ability. ',
179-
'Documentation sections: ',
180-
(SELECT aggregated_content FROM combined_content),
181-
' Question: ',
182-
(SELECT q FROM question)
183-
) as p
184-
)
185-
-- 将连接的文本传递给 ai_text_completion 函数以生成连贯且相关的响应
186-
SELECT ai_text_completion((SELECT p FROM prompt)) AS answer;
187-
```
188-
189-
结果:
190-
```sql
191-
+------------------------------------------------------------------------------------------------------------------+
192-
| answer |
193-
+------------------------------------------------------------------------------------------------------------------+
194-
| Answer: The ai functions mentioned in the Databend documentation are ai_embedding_vector and ai_text_completion. |
195-
+------------------------------------------------------------------------------------------------------------------+
196-
```
79+
[Databend Cloud](https://databend.com) 上通过免费试用体验这些 AI 功能。
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
---
22
title: "AI_EMBEDDING_VECTOR"
3-
description: "使用 Databend 中的 ai_embedding_vector 函数创建嵌入向量"
3+
description: " Databend 中使用 ai_embedding_vector 函数创建 embeddings"
44
---
55

6-
本文档概述了 Databend 中的 ai_embedding_vector 函数,并演示了如何使用此函数创建文档嵌入向量
6+
本文档概述了 Databend 中的 ai_embedding_vector 函数,并演示了如何使用此函数创建文档 embeddings
77

8-
主要代码实现可以在[这里](https://github.com/databendlabs/databend/blob/1e93c5b562bd159ecb0f336bb88fd1b7f9dc4a62/src/common/openai/src/embedding.rs)找到
8+
主要代码实现在[这里](https://github.com/databendlabs/databend/blob/1e93c5b562bd159ecb0f336bb88fd1b7f9dc4a62/src/common/openai/src/embedding.rs)
99

10-
默认情况下,Databend 使用 [text-embedding-ada](https://platform.openai.com/docs/models/embeddings) 模型来生成嵌入向量
10+
默认情况下,Databend 利用 [text-embedding-ada](https://platform.openai.com/docs/models/embeddings) 模型来生成 embeddings
1111

1212
:::info
13-
从 Databend v1.1.47 开始,Databend 支持 [Azure OpenAI 服务](https://azure.microsoft.com/en-au/products/cognitive-services/openai-service)
13+
从 Databend v1.1.47 开始,Databend 支持 [Azure OpenAI service](https://azure.microsoft.com/en-au/products/cognitive-services/openai-service)
1414

15-
这一集成提供了更好的数据隐私保护
15+
这种集成提供了改进的数据隐私
1616

17-
要使用 Azure OpenAI,请在 `[query]` 部分添加以下配置
17+
要使用 Azure OpenAI,请将以下配置添加到 `[query]` 部分
1818

1919
```sql
2020
# Azure OpenAI
@@ -26,22 +26,22 @@ openai_api_version = "2023-03-15-preview"
2626
:::
2727

2828
:::caution
29-
Databend 依赖 (Azure) OpenAI 进行 `AI_EMBEDDING_VECTOR` 处理,并将嵌入列数据发送到 (Azure) OpenAI。
29+
Databend 依赖于 (Azure) OpenAI 来实现 `AI_EMBEDDING_VECTOR`,并将 embedding 列数据发送到 (Azure) OpenAI。
3030

31-
它们仅在 Databend 配置包含 `openai_api_key` 时有效,否则将处于非活动状态
31+
只有当 Databend 配置包含 `openai_api_key` 时,它们才会工作,否则它们将处于非活动状态
3232

33-
此功能默认在 [Databend Cloud](https://databend.com) 上使用我们的 Azure OpenAI 密钥提供。如果您使用它们,即表示您确认您的数据将由我们发送至 Azure OpenAI。
33+
此函数在 [Databend Cloud](https://databend.com) 上默认可用,使用我们的 Azure OpenAI 密钥。如果您使用它们,您承认您的数据将由我们发送到 Azure OpenAI。
3434
:::
3535

3636
## ai_embedding_vector 概述
3737

38-
Databend 中的 `ai_embedding_vector` 函数是一个内置函数,用于生成文本数据的向量嵌入。它在自然语言处理任务中非常有用,例如文档相似性、聚类和推荐系统。
38+
Databend 中的 `ai_embedding_vector` 函数是一个内置函数,用于为文本数据生成向量 embeddings。它对于自然语言处理任务非常有用,例如文档相似性、聚类和推荐系统。
3939

40-
该函数接受文本输入并返回一个高维向量,该向量表示输入文本的语义意义和上下文。嵌入向量是使用在大规模文本语料库上预训练的模型创建的,捕捉了单词和短语在连续空间中的关系
40+
该函数接受文本输入,并返回一个高维向量,该向量表示输入文本的语义含义和上下文。embeddings 是使用大型文本语料库上的预训练模型创建的,从而捕获连续空间中单词和短语之间的关系
4141

42-
## 使用 ai_embedding_vector 创建嵌入向量
42+
## 使用 ai_embedding_vector 创建 embeddings
4343

44-
要使用 `ai_embedding_vector` 函数为文本文档创建嵌入向量,请按照以下示例操作。
44+
要使用 `ai_embedding_vector` 函数为文本文档创建 embeddings,请按照以下示例操作。
4545

4646
1. 创建一个表来存储文档:
4747

@@ -50,33 +50,33 @@ CREATE TABLE documents (
5050
id INT,
5151
title VARCHAR,
5252
content VARCHAR,
53-
embedding ARRAY(FLOAT32 NOT NULL)
53+
embedding ARRAY(FLOAT NOT NULL)
5454
);
5555
```
5656

57-
2. 向表中插入示例文档
57+
2. 将示例文档插入到表中
5858

5959
```sql
6060
INSERT INTO documents(id, title, content)
6161
VALUES
62-
(1, '人工智能简史', '人工智能(AI)一直是科幻小说中一个引人入胜的概念,已有数十年的历史...'),
63-
(2, '机器学习与深度学习', '机器学习和深度学习是人工智能的两个子集...'),
64-
(3, '神经网络解析', '神经网络是一系列算法,旨在识别潜在的关系...'),
62+
(1, 'A Brief History of AI', 'Artificial intelligence (AI) has been a fascinating concept of science fiction for decades...'),
63+
(2, 'Machine Learning vs. Deep Learning', 'Machine learning and deep learning are two subsets of artificial intelligence...'),
64+
(3, 'Neural Networks Explained', 'A neural network is a series of algorithms that endeavors to recognize underlying relationships...'),
6565
```
6666

67-
3. 生成嵌入向量
67+
3. 生成 embeddings
6868

6969
```sql
7070
UPDATE documents SET embedding = ai_embedding_vector(content) WHERE embedding IS NULL;
7171
```
7272

73-
运行查询后,表中的 embedding 列将包含生成的嵌入向量
73+
运行查询后,表中的 embedding 列将包含生成的 embeddings
7474

75-
嵌入向量以 `FLOAT32` 值的数组形式存储在 embedding 列中,该列具有 `ARRAY(FLOAT32 NOT NULL)` 列类型。
75+
embeddings 作为 `FLOAT` 值的数组存储在 embedding 列中,该列具有 `ARRAY(FLOAT NOT NULL)` 列类型。
7676

77-
现在,您可以使用这些嵌入向量进行各种自然语言处理任务,例如查找相似文档或根据内容对文档进行聚类
77+
现在,您可以将这些 embeddings 用于各种自然语言处理任务,例如查找相似文档或根据文档内容对文档进行聚类
7878

79-
4. 检查嵌入向量
79+
4. 检查 embeddings
8080

8181
```sql
8282
SELECT length(embedding) FROM documents;
@@ -89,4 +89,4 @@ SELECT length(embedding) FROM documents;
8989
+-------------------+
9090
```
9191

92-
上述查询显示,每个文档生成的嵌入向量长度为 1536(维度)。
92+
上面的查询显示,为每个文档生成的 embeddings 的长度为 1536(维度)。

0 commit comments

Comments
 (0)