# Testing cognitive search in local environment
1. Create a virtual environment with python
requirements.txt
```
pip intall -r requirements.txt
```
```
azure-functions
azure-search-documents==11.4.0b6
openai[datalib]==0.27.8
```
2. Implement the code with respective keys
```
# pip install azure-search-documents==11.4.0b6
# pip install openai[datalib]==0.28
from azure.search.documents import SearchClient
from azure.search.documents.models import QueryType
from azure.core.credentials import AzureKeyCredential
import openai
resource_name = "cognitivesearch-jpeast-aoi-standard"
base_resource_name = "oai-jp-gpt35"
# search_service_name = "resorce_name" # Cognitive Searchのデプロイ名
search_index_name = "index_name" # index名
search_api_key = "api_key" # cognitive search/search service APIキー
search_endpoint = f"https://{resource_name}.search.windows.net" # Endポイント
vector_field_name = "vector" # index内でベクトルを格納しているフィールド名 特に変更していなければ「vector」
# context_field_name = "chunk" # index内でchunkを格納しているフィールド名 特に変更していなければ「chunk」
semantic_vector_name = "semantic vector name"
openai.api_type = "azure" # AOAIを使用するためazure
openai.api_base = f"https://{base_resource_name}.openai.azure.com/" #endポイント
openai.api_version = "2023-07-01-preview" #Azure AI Studioのチャットプレイグランドで送信例のコード表示から
openai.api_key = "api_key" # APIキー
# embedding_deploy_name = "gpt-35-turbo" # AOAIのembeddingモデルのデプロイ名
embedding_deploy_name = "text-embedding-AOI" # AOAIのembeddingモデルのデプロイ名
search_client = SearchClient(endpoint=search_endpoint,
index_name=search_index_name,
credential=AzureKeyCredential(search_api_key))
# print(search_client)
# query_text = '{検索したい内容}'
query_text = 'sample'
query_vector = openai.Embedding.create(engine=embedding_deploy_name, input=query_text)["data"][0]["embedding"]
# print(query_vector)
# exit()
results = list(
search_client.search(
query_text,
filter=None,
query_type=QueryType.SEMANTIC, # セマンティック検索を指定
# query_language="ja-jp", # 日本語の場合は ja-jp
query_speller="none",
semantic_configuration_name=semantic_vector_name,
top=3,
# Message: Parameter 'captions' is supported only when 'queryType' is set to 'semantic'.
query_caption="extractive|highlight-false" if True else None,
vector=query_vector,
top_k=50 if query_vector else None,
vector_fields=vector_field_name if query_vector else None
)
)
print(results[0]["title"])
```
3. Run the python script from terminal