
在Confluent Current 2024上,我们演示了Wealingo,一个使用Weaviate的向量数据库和Confluent Cloud构建的语言学习应用程序,Confluent Cloud是一个基于Apache Kafka的完全托管的流数据服务。该演示重点展示了实时数据和向量嵌入如何通过持续适应用户表现来实现个性化学习。让我们深入了解Wealingo如何利用这些技术提供动态、量身定制的实时语言课程。
应用概述
Wealingo是一个个性化的语言学习应用程序,旨在帮助用户通过量身定制的体验学习意大利语。它凭借两个关键创新脱颖而出
- 语义搜索:用户可以快速搜索所有主题的课程,绕过严格的结构。这使他们能够立即找到基于当前需求和上下文的最相关内容。
- 个性化问题生成:该应用程序根据个别用户表现和偏好生成自定义问题。
目标是提供与每个用户优势、劣势和兴趣相一致的持续、自适应学习。
架构

Wealingo的架构由以下关键组件组成
- 移动应用程序:用户与应用程序交互、搜索短语和请求个性化问题的平台。
- PostgreSQL:充当记录系统,存储所有应用程序和用户数据,包括题库和用户表现。
- Debezium PostgreSQL 变更数据捕获 (CDC):捕获数据库中的任何更改,并实时将其流式传输到Confluent Cloud。
- Confluent Cloud:处理实时数据流,确保应用程序适应用户进度。
- 大型语言模型 (LLM):生成个性化问题
- Weaviate:处理向量嵌入、语义搜索和与LLM的交互
工作原理
语义搜索
Wealingo中的语义搜索允许用户根据查询背后的含义查找问题,而不是受限于精确的关键词。这种灵活性有助于用户快速找到与其当前需求最相关的课程。
例如,假设用户对“如何购买鲜花”的课程感兴趣。对该查询进行语义搜索将返回以下结果:
- 我想购买红玫瑰
- 我可以购买一篮子黄雏菊吗?
- 你们有不同颜色的扶桑花吗?

通过比较用户搜索查询的向量嵌入与已保存在数据库中的翻译,我们可以检索与用户请求相似的短语。使用Weaviate,您可以通过使用混合搜索API将向量搜索和关键词搜索的力量结合起来。混合搜索根据API中alpha的值,将向量搜索和关键词搜索的结果集融合为一个。alpha为1是纯向量搜索,而0是纯关键词搜索。
search_query = "how to buy flowers"
conversations = client.collections.get("ConversationalStatements")
response = conversations.query.hybrid(
limit=10,
query=search_query,
query_properties=["question"],
return_properties=["question", "answer"],
return_metadata=MetadataQuery(score=True),
)
个性化问题生成
有时,用户可能需要有关高度特定场景的帮助。例如,假设用户想了解“购买一束蓝色百合花”。这种特殊性不太可能在任何预先编写的课程中找到,因为课程是由人类教师编写的,没有人能够预料到所有场景。
这时,生成式人工智能发挥作用。Wealingo利用Weaviate和LLM动态生成符合用户确切需求并根据他们当前技能水平量身定制的个性化问题,帮助他们无论请求多么小众,都能在上下文中学习。
例如,如果用户要求人工智能生成关于“购买一束蓝色百合花”的问题

在底层,该应用程序首先收集查询和相关个人资料数据,例如用户的过去错误,并将此信息发送到Weaviate。Weaviate使用这些输入来构建提示,然后将其通过generative-openai模块传递给LLM(在本例中为OpenAI)。LLM生成个性化问题,这些问题被发送回应用程序并保存在PostgreSQL数据库中,该数据库充当记录系统。为了捕捉用户的流利度,Wealingo会获取过去未回答或错误的题目,并在上下文中加以利用。
context = "Create 3 new questions based on fluency of user"
generate_query = "buying a bouquet of blue lilies"
response = conversations.generate.near_text(
query=generate_query,
limit=10,
grouped_task=context,
)
为了保持一切最新,Debezium PostgreSQL CDC连接器会将任何新生成的问题实时流式传输到Kafka队列。从那里,我们的spark-connector从Kafka中消耗问题,确保当用户再次搜索类似内容时,例如“购买蓝色百合花”,人工智能生成的内容已经存在于Weaviate中,随时可以检索

这种设置允许Wealingo的题库根据现实世界的用户需求不断增长和发展。
结论
Wealingo展示了实时数据流和人工智能如何将语言学习转变为个性化体验。凭借Weaviate与Confluent Cloud和LLM的无缝集成,该应用程序可以动态生成量身定制的课程,并根据用户交互不断发展。
如果您有兴趣进一步探索,请随时fork Wealingo代码并自行进行实验。
准备开始构建了吗?
请查看 快速入门教程,或使用 Weaviate Cloud (WCD) 的免费试用版构建令人惊叹的应用程序。