쿼리 번역
14706 단어 nlpmachinelearningpythonshowdev
이 문서는 AI 기반 시맨틱 검색 플랫폼인 txtai에 대한 자습서 시리즈의 일부입니다.
txtai은 머신 러닝 워크플로를 실행하여 데이터를 변환하고 AI 기반 시맨틱 검색 애플리케이션을 구축합니다.
txtai는 두 가지 기본 쿼리 유형인 자연어 문과 SQL 문을 지원합니다. 자연어 쿼리는 쿼리와 같은 검색 엔진을 처리합니다. SQL 문은 보다 복잡한 필터링, 정렬 및 열 선택을 가능하게 합니다. 쿼리 번역은 둘 사이의 격차를 해소하고 자연어 쿼리에 대한 필터링을 가능하게 합니다.
예를 들어 쿼리는 다음과 같습니다.
Tell me a feel good story since yesterday
된다
select * from txtai where similar("Tell me a feel good story") and
entry >= date('now', '-1 day')
종속성 설치
txtai
및 모든 종속성을 설치합니다.
pip install txtai[pipeline]
인덱스 생성
먼저 인덱스를 만드는 방법을 요약해 보겠습니다. 우리는 고전적인 txtai 예제를 사용할 것입니다.
from txtai.embeddings import Embeddings
data = ["US tops 5 million confirmed virus cases",
"Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg",
"Beijing mobilises invasion craft along coast as Taiwan tensions escalate",
"The National Park Service warns against sacrificing slower friends in a bear attack",
"Maine man wins $1M from $25 lottery ticket",
"Make huge profits without work, earn up to $100,000 a day"]
# Create embeddings index with content enabled. The default behavior is to only store indexed vectors.
embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2", "content": True})
# Create an index for the list of text
embeddings.index([(uid, text, None) for uid, text in enumerate(data)])
# Run a search
embeddings.search("feel good story", 1)
[{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}]
쿼리 번역 모델
다음으로 쿼리 번역 모델이 예제와 함께 작동하는 방식을 살펴보겠습니다.
from txtai.pipeline import Sequences
sequences = Sequences("NeuML/t5-small-txtsql")
queries = [
"feel good story",
"feel good story since yesterday",
"feel good story with lottery in text",
"how many feel good story",
"feel good story translated to fr",
"feel good story summarized"
]
# Prefix to pass to T5 model
prefix = "translate English to SQL: "
for query in queries:
print(f"Input: {query}")
print(f"SQL: {sequences(query, prefix)}")
print()
Input: feel good story
SQL: select id, text, score from txtai where similar('feel good story')
Input: feel good story since yesterday
SQL: select id, text, score from txtai where similar('feel good story') and entry >= date('now', '-1 day')
Input: feel good story with lottery in text
SQL: select id, text, score from txtai where similar('feel good story') and text like '% lottery%'
Input: how many feel good story
SQL: select count(*) from txtai where similar('feel good story')
Input: feel good story translated to fr
SQL: select id, translate(text, 'fr') text, score from txtai where similar('feel good story')
Input: feel good story summarized
SQL: select id, summary(text) text, score from txtai where similar('feel good story')
위의 쿼리 번역을 보면 이 모델이 어떻게 작동하는지 알 수 있습니다.
t5-small-txtsql이 기본 모델입니다. 사용자 지정 도메인 쿼리 구문 언어는 다른 언어를 포함하여 이와 동일한 방법을 사용하여 만들 수 있습니다. 자연어는 함수, 쿼리 절, 열 선택 등으로 번역될 수 있습니다!
자연어 필터링
이제 이것을 실행할 때입니다! 먼저 임베딩 인덱스를 적절한 설정으로 초기화하겠습니다.
from txtai.pipeline import Translation
def translate(text, lang):
return translation(text, lang)
translation = Translation()
# Create embeddings index with content enabled. The default behavior is to only store indexed vectors.
embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2",
"content": True,
"query": {"path": "NeuML/t5-small-txtsql"},
"functions": [translate]})
# Create an index for the list of text
embeddings.index([(uid, text, None) for uid, text in enumerate(data)])
query = "select id, score, translate(text, 'de') 'text' from txtai where similar('feel good story')"
# Run a search using a custom SQL function
embeddings.search(query)[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
쿼리 모델이 임베딩 인덱스 구성 매개변수로 어떻게 제공되었는지 확인하세요. 사용자 지정 SQL 함수도 추가되었습니다. 이제 동일한 SQL 문을 자연어 쿼리로 실행할 수 있는지 살펴보겠습니다.
embeddings.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
같은 결과입니다. 몇 가지 더 시도해 보겠습니다.
embeddings.search("feel good story since yesterday")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
embeddings.search("feel good story with lottery in text")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
좋은 측정을 위해 결과를 반환하지 않는 필터가 있는 몇 가지 쿼리입니다.
embeddings.search("feel good story with missing in text")
[]
embeddings.search("feel good story with field equal 14")
[]
애플리케이션을 사용한 쿼리 번역
물론 이것은 모두 YAML로 구성된 애플리케이션에서 사용할 수 있습니다.
config = """
translation:
writable: true
embeddings:
path: sentence-transformers/nli-mpnet-base-v2
content: true
query:
path: NeuML/t5-small-txtsql
functions:
- {name: translate, argcount: 2, function: translation}
"""
from txtai.app import Application
# Build application and index data
app = Application(config)
app.add([{"id": x, "text": row} for x, row in enumerate(data)])
app.index()
# Run search query
app.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
마무리
이 기사에서는 쿼리 번역 모델을 사용한 자연어 필터링을 소개했습니다. 이 강력한 기능은 자연어 문장에 필터링 및 파이프라인을 추가합니다. 사용자 지정 도메인별 쿼리 언어를 생성하여 기본적으로 txtai에서 풍부한 쿼리를 활성화할 수 있습니다.
Reference
이 문제에 관하여(쿼리 번역), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/neuml/query-translation-5ccj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install txtai[pipeline]
먼저 인덱스를 만드는 방법을 요약해 보겠습니다. 우리는 고전적인 txtai 예제를 사용할 것입니다.
from txtai.embeddings import Embeddings
data = ["US tops 5 million confirmed virus cases",
"Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg",
"Beijing mobilises invasion craft along coast as Taiwan tensions escalate",
"The National Park Service warns against sacrificing slower friends in a bear attack",
"Maine man wins $1M from $25 lottery ticket",
"Make huge profits without work, earn up to $100,000 a day"]
# Create embeddings index with content enabled. The default behavior is to only store indexed vectors.
embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2", "content": True})
# Create an index for the list of text
embeddings.index([(uid, text, None) for uid, text in enumerate(data)])
# Run a search
embeddings.search("feel good story", 1)
[{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}]
쿼리 번역 모델
다음으로 쿼리 번역 모델이 예제와 함께 작동하는 방식을 살펴보겠습니다.
from txtai.pipeline import Sequences
sequences = Sequences("NeuML/t5-small-txtsql")
queries = [
"feel good story",
"feel good story since yesterday",
"feel good story with lottery in text",
"how many feel good story",
"feel good story translated to fr",
"feel good story summarized"
]
# Prefix to pass to T5 model
prefix = "translate English to SQL: "
for query in queries:
print(f"Input: {query}")
print(f"SQL: {sequences(query, prefix)}")
print()
Input: feel good story
SQL: select id, text, score from txtai where similar('feel good story')
Input: feel good story since yesterday
SQL: select id, text, score from txtai where similar('feel good story') and entry >= date('now', '-1 day')
Input: feel good story with lottery in text
SQL: select id, text, score from txtai where similar('feel good story') and text like '% lottery%'
Input: how many feel good story
SQL: select count(*) from txtai where similar('feel good story')
Input: feel good story translated to fr
SQL: select id, translate(text, 'fr') text, score from txtai where similar('feel good story')
Input: feel good story summarized
SQL: select id, summary(text) text, score from txtai where similar('feel good story')
위의 쿼리 번역을 보면 이 모델이 어떻게 작동하는지 알 수 있습니다.
t5-small-txtsql이 기본 모델입니다. 사용자 지정 도메인 쿼리 구문 언어는 다른 언어를 포함하여 이와 동일한 방법을 사용하여 만들 수 있습니다. 자연어는 함수, 쿼리 절, 열 선택 등으로 번역될 수 있습니다!
자연어 필터링
이제 이것을 실행할 때입니다! 먼저 임베딩 인덱스를 적절한 설정으로 초기화하겠습니다.
from txtai.pipeline import Translation
def translate(text, lang):
return translation(text, lang)
translation = Translation()
# Create embeddings index with content enabled. The default behavior is to only store indexed vectors.
embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2",
"content": True,
"query": {"path": "NeuML/t5-small-txtsql"},
"functions": [translate]})
# Create an index for the list of text
embeddings.index([(uid, text, None) for uid, text in enumerate(data)])
query = "select id, score, translate(text, 'de') 'text' from txtai where similar('feel good story')"
# Run a search using a custom SQL function
embeddings.search(query)[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
쿼리 모델이 임베딩 인덱스 구성 매개변수로 어떻게 제공되었는지 확인하세요. 사용자 지정 SQL 함수도 추가되었습니다. 이제 동일한 SQL 문을 자연어 쿼리로 실행할 수 있는지 살펴보겠습니다.
embeddings.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
같은 결과입니다. 몇 가지 더 시도해 보겠습니다.
embeddings.search("feel good story since yesterday")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
embeddings.search("feel good story with lottery in text")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
좋은 측정을 위해 결과를 반환하지 않는 필터가 있는 몇 가지 쿼리입니다.
embeddings.search("feel good story with missing in text")
[]
embeddings.search("feel good story with field equal 14")
[]
애플리케이션을 사용한 쿼리 번역
물론 이것은 모두 YAML로 구성된 애플리케이션에서 사용할 수 있습니다.
config = """
translation:
writable: true
embeddings:
path: sentence-transformers/nli-mpnet-base-v2
content: true
query:
path: NeuML/t5-small-txtsql
functions:
- {name: translate, argcount: 2, function: translation}
"""
from txtai.app import Application
# Build application and index data
app = Application(config)
app.add([{"id": x, "text": row} for x, row in enumerate(data)])
app.index()
# Run search query
app.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
마무리
이 기사에서는 쿼리 번역 모델을 사용한 자연어 필터링을 소개했습니다. 이 강력한 기능은 자연어 문장에 필터링 및 파이프라인을 추가합니다. 사용자 지정 도메인별 쿼리 언어를 생성하여 기본적으로 txtai에서 풍부한 쿼리를 활성화할 수 있습니다.
Reference
이 문제에 관하여(쿼리 번역), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/neuml/query-translation-5ccj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from txtai.pipeline import Sequences
sequences = Sequences("NeuML/t5-small-txtsql")
queries = [
"feel good story",
"feel good story since yesterday",
"feel good story with lottery in text",
"how many feel good story",
"feel good story translated to fr",
"feel good story summarized"
]
# Prefix to pass to T5 model
prefix = "translate English to SQL: "
for query in queries:
print(f"Input: {query}")
print(f"SQL: {sequences(query, prefix)}")
print()
Input: feel good story
SQL: select id, text, score from txtai where similar('feel good story')
Input: feel good story since yesterday
SQL: select id, text, score from txtai where similar('feel good story') and entry >= date('now', '-1 day')
Input: feel good story with lottery in text
SQL: select id, text, score from txtai where similar('feel good story') and text like '% lottery%'
Input: how many feel good story
SQL: select count(*) from txtai where similar('feel good story')
Input: feel good story translated to fr
SQL: select id, translate(text, 'fr') text, score from txtai where similar('feel good story')
Input: feel good story summarized
SQL: select id, summary(text) text, score from txtai where similar('feel good story')
이제 이것을 실행할 때입니다! 먼저 임베딩 인덱스를 적절한 설정으로 초기화하겠습니다.
from txtai.pipeline import Translation
def translate(text, lang):
return translation(text, lang)
translation = Translation()
# Create embeddings index with content enabled. The default behavior is to only store indexed vectors.
embeddings = Embeddings({"path": "sentence-transformers/nli-mpnet-base-v2",
"content": True,
"query": {"path": "NeuML/t5-small-txtsql"},
"functions": [translate]})
# Create an index for the list of text
embeddings.index([(uid, text, None) for uid, text in enumerate(data)])
query = "select id, score, translate(text, 'de') 'text' from txtai where similar('feel good story')"
# Run a search using a custom SQL function
embeddings.search(query)[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
쿼리 모델이 임베딩 인덱스 구성 매개변수로 어떻게 제공되었는지 확인하세요. 사용자 지정 SQL 함수도 추가되었습니다. 이제 동일한 SQL 문을 자연어 쿼리로 실행할 수 있는지 살펴보겠습니다.
embeddings.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
같은 결과입니다. 몇 가지 더 시도해 보겠습니다.
embeddings.search("feel good story since yesterday")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
embeddings.search("feel good story with lottery in text")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine man wins $1M from $25 lottery ticket'}
좋은 측정을 위해 결과를 반환하지 않는 필터가 있는 몇 가지 쿼리입니다.
embeddings.search("feel good story with missing in text")
[]
embeddings.search("feel good story with field equal 14")
[]
애플리케이션을 사용한 쿼리 번역
물론 이것은 모두 YAML로 구성된 애플리케이션에서 사용할 수 있습니다.
config = """
translation:
writable: true
embeddings:
path: sentence-transformers/nli-mpnet-base-v2
content: true
query:
path: NeuML/t5-small-txtsql
functions:
- {name: translate, argcount: 2, function: translation}
"""
from txtai.app import Application
# Build application and index data
app = Application(config)
app.add([{"id": x, "text": row} for x, row in enumerate(data)])
app.index()
# Run search query
app.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
마무리
이 기사에서는 쿼리 번역 모델을 사용한 자연어 필터링을 소개했습니다. 이 강력한 기능은 자연어 문장에 필터링 및 파이프라인을 추가합니다. 사용자 지정 도메인별 쿼리 언어를 생성하여 기본적으로 txtai에서 풍부한 쿼리를 활성화할 수 있습니다.
Reference
이 문제에 관하여(쿼리 번역), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/neuml/query-translation-5ccj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
config = """
translation:
writable: true
embeddings:
path: sentence-transformers/nli-mpnet-base-v2
content: true
query:
path: NeuML/t5-small-txtsql
functions:
- {name: translate, argcount: 2, function: translation}
"""
from txtai.app import Application
# Build application and index data
app = Application(config)
app.add([{"id": x, "text": row} for x, row in enumerate(data)])
app.index()
# Run search query
app.search("feel good story translated to de")[0]
{'id': '4',
'score': 0.08329011499881744,
'text': 'Maine Mann gewinnt $1M von $25 Lotterie-Ticket'}
이 기사에서는 쿼리 번역 모델을 사용한 자연어 필터링을 소개했습니다. 이 강력한 기능은 자연어 문장에 필터링 및 파이프라인을 추가합니다. 사용자 지정 도메인별 쿼리 언어를 생성하여 기본적으로 txtai에서 풍부한 쿼리를 활성화할 수 있습니다.
Reference
이 문제에 관하여(쿼리 번역), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/neuml/query-translation-5ccj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)